Выберите экземпляры объекта, которые связаны со всеми другими экземплярами другого объекта.MySql

Форум по Mysql
Ответить
Anonymous
 Выберите экземпляры объекта, которые связаны со всеми другими экземплярами другого объекта.

Сообщение Anonymous »

У меня есть эти 3 таблицы:

Код: Выделить всё

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)
);
Мне нужно выбрать всех животных, которые участвовали во всех ярмарках 2023 года.
Сейчас я пытаюсь сделать это следующим образом:

Код: Выделить всё

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 animal A1 JOIN participation P1 ON (A1.ID = P1.ID)
WHERE (A1.ID = A.ID AND P1.Fair_Year = 2023)
)
);
Однако это просто возвращает пустую таблицу, даже если в базе данных есть животное, которое участвует во всех ярмарках 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «MySql»