2014-12-23 7 views
0

У меня есть следующая схема базы данных. Таблицы VHS и DVD оба наследуются от Suport_Media, и оба содержат один фильм (фильм, переведенный по-английски, означает фильм). Я хочу создать представление, которое содержит информацию обо всех доступных Suport_Media с фильмами, которые они содержат. Для этого мне нужно объединить таблицы suport_media, dvd, vhs и film в один стол с внутренними соединениями. Проблема в том, что я не могу понять, как объединить VHS и DVD в один стол, а затем присоединиться к нему с Suport_Media и Film.Mysql Inner Объединить таблицы, наследующие одну и ту же таблицу

Я попытался следующий код:

CREATE 
VIEW Informatii_Suport_Media AS 
SELECT Titlu, Actori_Principali, Tip, Durata_Film, Data_Lansare, Pret 
FROM VHS V 
INNER JOIN DVD D ON V.Suport_Media_ID <> D.Suport_Media_ID 
INNER JOIN DVD D1 ON Suport_Media.Suport_Media_ID = D.Suport_Media_ID 
INNER JOIN Film F ON F.Film_ID = D1.Film_ID 
GROUP BY V.Suport_Media_ID 
ORDER BY V.Suport_Media_ID ASC; 

Схема расположена по адресу: https://imageshack.com/i/hl0DNwc1p

+1

Там нет 'Support_Media' таблицы в вашем присоединиться, вы не можете использовать' Support_Media.Support_Media_ID'. – Barmar

+0

Должно ли 'DVD D1' присоединиться к' Support_Media'? – Barmar

+0

Я не совсем понимаю, что вам нужно, но я подозреваю, что вам нужен 'UNION', чтобы объединить таблицы' DVD' и 'VHS', а не' JOIN'. – Barmar

ответ

1

Регистрация DVD и VHS отдельно с другими таблицами, а затем объединить их с UNION

CREATE VIEW Informatii_Suport_Media AS 
SELECT Titlu, Actori_Principali, Tip, Durata_Film, Data_Lansare, Pret 
FROM DVD D 
INNER JOIN Support_Media S ON S.Suport_Media_ID = D.Suport_Media_ID 
INNER JOIN Film F ON F.Film_ID = D.Film_ID 
GROUP BY S.Suport_Media_ID 
UNION 
SELECT Titlu, Actori_Principali, Tip, Durata_Film, Data_Lansare, Pret 
FROM VHS V 
INNER JOIN Support_Media S ON S.Suport_Media_ID = V.Suport_Media_ID 
INNER JOIN Film F ON F.Film_ID = V.Film_ID 
GROUP BY S.Suport_Media_ID 

Другой способ обойти ограничение a активизирую положить подзапрос в предложении о целях FROM пути создания другого вида:

CREATE VIEW DVD_VHS AS 
SELECT Support_Media_ID, Film_ID 
FROM DVD 
UNION 
SELECT Support_Media_ID, Film_ID 
FROM VHS; 

CREATE VIEW Informatii_Suport_Media AS 
SELECT Titlu, Actori_Principali, Tip, Durata_Film, Data_Lansare, Pret 
FROM DVD_VHS DV 
INNER JOIN Support_Media S ON S.Suport_Media_ID = DV.Suport_Media_ID 
INNER JOIN Film F ON F.Film_ID = DV.Film_ID 
GROUP BY S.Suport_Media_ID 
ORDER BY S.Support_Media_ID ASC 
Смежные вопросы