Wählen Sie Instanzen einer Entität aus, die mit allen anderen Instanzen einer anderen Entität in Beziehung stehenMySql

MySQL DBMS-Forum
Guest
 Wählen Sie Instanzen einer Entität aus, die mit allen anderen Instanzen einer anderen Entität in Beziehung stehen

Post by Guest »

Ich habe diese 3 Tabellen:

Code: Select all

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)
);
Ich muss alle Tiere auswählen, die an allen Messen des Jahres 2023 teilgenommen haben.
Derzeit versuche ich das so zu machen:

Code: Select all

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)
)
);
Dies gibt jedoch nur eine leere Tabelle zurück, obwohl die Datenbank ein Tier enthält, das an allen Messen im Jahr 2023 teilnimmt. Was mache ich falsch?
PROBENDATEN:

MESSEN



Titel
Jahr




Messe 1
2023),


Messe 2< /td>
2023),


Messe 3
< td>2022),


Messe 4
2022);


Tiere



ID
Art
Name



< tr>
0
Schwein
Schwein


1
Ziege
Lucy


2
KuhMaia


3
Katze
Melo


4
Hund
Dela


Teilnahme



Messetitel
Fair_Year
Animal_ID



< tr>
Messe 1
2023
3


Messe 2
2023
3


Messe 1
2023
4


Messe 2
2023
4


Messe 2
2023
2


Messe 1
2023
2


Messe 2
2022
1


Messe 1
2023
1


Messe 4
2022
1


Messe 4
2022
4


Messe 4
2022
0


Messe 1
2023
0



Erwartete Ergebnisse sind: Maia, Melo und Dela, seitdem sind die Tiere, die an beiden Messen 2023 teilgenommen haben

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post