Код: Выделить всё
CREATE TABLE Fair(
Title varchar(100),
Year int,
PRIMARY KEY(Titolo, Anno),
);
CREATE TABLE Animal(
ID int PRIMARY KEY,
Species varchar(100),
Name varchar(100),
);
CREATE TABLE Participation(
Fair_Title varchar(100),
Fair_Year int,
Animal_ID int,
FOREIGN KEY(Fair_Title, Fair_Year) references Fair(Title, Year),
FOREIGN KEY(Animal_ID) references Animale(ID),
PRIMARY KEY(Fair_Title, Fair_Year, Animal_ID)
);
Сейчас я пытаюсь сделать это следующим образом:
Код: Выделить всё
SELECT DISTINCT A.Name as Animal_Name
FROM animal A JOIN participation P ON (A.ID = P.Animal_ID)
WHERE (P.Fair_Year = 2023) AND
NOT EXISTS (
SELECT F.Title FROM fair F
WHERE F.Title NOT IN(
SELECT P1.Fair_Title
FROM animae A1 JOIN participation P1 ON (A1.ID = P1.ID)
WHERE (A1.ID = A.ID AND P1.Fair_Year = 2023)
)
);
Пример данных:
ЯРМАРКИ - («Ярмарка 1», 2023 г.),
("Ярмарка 2", 2023 г.),
("Ярмарка 3", 2022 г.),
("Ярмарка 4", 2022 г. );
Животные - (0, «Свинья», «Свинья»),
(1, «Коза», «Люси»),
(2, «Корова», «Майя»),
(3, «Кот», «Мело»),
( 4, «Собака», «Дела»);
Участие - ("Ярмарка 1", 2023, 3, 100),
("Фиера 2", 2023, 3, 100),
(" Фиера 1", 2023, 4, 100),
("Фиера 2", 2023, 4, 100),
("Фиера 2", 2023, 2, 100),
("Ярмарка 1", 2023, 2, 100),
("Ярмарка 2", 2022, 1, 100),
("Ярмарка 1", 2023, 1, 100),
("Ярмарка 4", 2022, 1, 100),
("Ярмарка 4", 2022, 4, 100),
("Ярмарка 4", 2022, 0, 100),
("Фиера 1", 2023, 0, 100);
Ожидаемые результаты: Майя, Мело, Дела, поскольку именно эти животные участвовали в обеих ярмарках 2023 года.
Подробнее здесь: https://stackoverflow.com/questions/793 ... -all-other
Мобильная версия