Код: Выделить всё
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
Собака
Дела
Участие
Fair_title
Fair_Year
Animal_ID
Ярмарка 1
2023
3
Фиера 2
2023
3
Фиера 1
2023
4
< tr>
Фиера 2
2023
4
Фиера 2
2023
2
Ярмарка 1
2023
2
Ярмарка 2
2022
1
Ярмарка 1
2023
1
4 ярмарка
2022
1
Ярмарка 4
2022
4
Ярмарка 4
2022
0
Фиера 1
2023
0
Ожидаемые результаты: Майя, Мело и Дела, поскольку именно эти животные участвовали в обеих ярмарках 2023 года.
Подробнее здесь: https://stackoverflow.com/questions/793 ... stances-of
Мобильная версия