Союзы, Взгляды и что-то не так!

  • Автор темы SergMalakhovets
  • 43
  • Обновлено
  • 18, May 2024
  • #1
У меня есть таблица, которая не была нормализована, и мы не сможем ее исправить в ближайшее время. У меня есть требование, которое будет намного проще, если я создам представление этой таблицы с объединением и сделаю его нормализованным.

Итак, у меня есть пара скрипок В этом случае я могу выполнить запрос с объединением и получить прогнозируемый ответ.
http://sqlfiddle.com/#!9/c4d829/1

Однако в этом случае я получаю ошибки, если ввожу полный код объединения (ниже), но он работает нормально как одиночный запрос, но не с объединением - в строке с надписью «объединение» у меня есть «недопустимый символ».
http://sqlfiddle.com/#!9/077e9b

 UNION

SELECT

registrations.`id`

, registrations.`membership_id`

, registrations.`partner_id`

, registrations.`content_id`

, registrations.`fees`

, registrations.`options`

, RPAD(registrations.`partnerattended`,3,' ') AS `attended`

FROM

`registrations`

WHERE registrations.`softdelete` = 'N'

AND registrations.`partner_id` IS NOT NULL
Код (разметка): Есть ли у кого-нибудь идеи, что может быть не так? Прошивка v5.5

SergMalakhovets


Рег
01 Jan, 2011

Тем
1

Постов
2

Баллов
12
  • 09, Jun 2024
  • #2
Вот этот - http://sqlfiddle.com/#!9/077e9b

но я не могу сохранить его с дополнительным sql. Вся схема должна быть:
 create table `registrations`

(`id` int(9) not null auto_increment,

`membership_id` int(9),

`individual_id` int(9),

`partner_id` int(9) null,

`content_id` int(9) null,

`individualattended` char(3) null,

`partnerattended` char(3) null,

`fees` int(5),

`options` text,

`softdelete` char(1),

primary key (`id`));

insert into `registrations` values

(1, 43, 2, 3, 4000, 'Yes', 'Yes', 50, '','N')

, (2, 43, 2, null, 4001, 'Yes', '', 150, '','N')

, (3, 44, 4, null, 4001, 'Yes', '', 250, '','N')

, (4, 45, 5, null, 4001, 'Yes', '', 350, '','N')

, (5, 46, 6, 9, 4001, 'Yes', 'No', 450, '','N')

, (6, 47, 7, 8, 4001, 'Yes', 'No', 550, '','N');

CREATE VIEW `vRegistrations` AS

(SELECT

registrations.`id`

, registrations.`membership_id`

, registrations.`individual_id`

, registrations.`content_id`

, registrations.`fees`

, registrations.`options`

, RPAD(registrations.`individualattended`,3,' ') AS `attended`

FROM

`registrations`

WHERE registrations.`softdelete` = 'N'

AND registrations.`individual_id` IS NOT NULL

UNION

SELECT

registrations.`id`

, registrations.`membership_id`

, registrations.`partner_id`

, registrations.`content_id`

, registrations.`fees`

, registrations.`options`

, RPAD(registrations.`partnerattended`,3,' ') AS `attended`

FROM

`registrations`

WHERE registrations.`softdelete` = 'N'

AND registrations.`partner_id` IS NOT NULL

);
Код (разметка):
 

anderss1


Рег
22 Feb, 2015

Тем
1

Постов
2

Баллов
12
  • 10, Jun 2024
  • #3
Я не серьезно, не верю в это. Итак, без объединения работает синтаксис с круглыми скобками вокруг оператора выбора.
 
CREATE VIEW `vRegistrations`

AS
( SELECT ...);
Код (разметка): Однако, если у вас есть объединение, вам придется убрать круглые скобки! Я уверен, что для кого-то это имеет смысл, но мне это кажется безумием. ссылка: https://stackoverflow.com/questions...reate-view-that-contains-union#answer-9941656
 

prelost


Рег
01 Jan, 2011

Тем
1

Постов
2

Баллов
12
Тем
49554
Комментарии
57426
Опыт
552966

Интересно