Abfrage 2 Spalten, wenn in der einen vorhanden, dann in der zweiten nicht anzeigen
Pepi
- datenbank
- mysql
Ich habe zwei Tabellen in meiner Datenbank, das eine ist meine Userliste, das andere eine Symbolliste.
In der Symbolliste werden alle meine Symbole einer festen ID zugeordnet
id ! datei
-----------
1 ! 1.jpg
2 ! 2.jpg
In meiner User liste kann man jedem User ein bestimmtes Symbol aus der Symbolliste zuordnen.
id !user ! id_symbol
-----------
1 ! Andreas ! 2
2 ! Bernhard ! 1
Jedes Symbol darf nur einmal vergeben werden. Jetzt kommt mein Problem.
Wie kann ich mir nur die Symbole anzeigen lassen die noch nicht vergeben sind
SELECT a.id, a.datei FROM symbol a WHERE (nicht in Usertabelle vorhanden).
Aber ich muss gestehen ich weiß nicht in welche die Richtung meiner Abfrage gehen soll.
Tach!
Wie kann ich mir nur die Symbole anzeigen lassen die noch nicht vergeben sind
SELECT a.id, a.datei FROM symbol a WHERE (nicht in Usertabelle vorhanden).
Aber ich muss gestehen ich weiß nicht in welche die Richtung meiner Abfrage gehen soll.
Correlated Subquery mit NOT EXISTS(). Reicht das schon als Stichwort, oder soll es ausführlicher sein?
dedlfix.
Hallo dedlfix,
Correlated Subquery mit NOT EXISTS(). Reicht das schon als Stichwort, oder soll es ausführlicher sein?
Ich wollte urpsrünglich schreiben „NOT EXISTS existiert.“, habs mir dann aber verkniffen. 😂
Bis demnächst
Matthias
Ja
SELECT a.id, a.datei FROM symbol a WHERE NOT EXISTS ( SELECT * FROM user WHERE id_symbol=a.id)
aber was ich natürlich vorher nicht bedacht habe, es muss doch eine Ausname geben.
Wie kann ich mir nur die Symbole anzeigen lassen die noch nicht vergeben sind, und das eine was dem User zugeordnet ist. Also praktisch
SELECT a.id, a.datei FROM symbol a WHERE NOT EXISTS ( SELECT * FROM user WHERE id_symbol=a.id) UND id_symbol des users
Tach!
Wie kann ich mir nur die Symbole anzeigen lassen die noch nicht vergeben sind, und das eine was dem User zugeordnet ist. Also praktisch
SELECT a.id, a.datei FROM symbol a WHERE NOT EXISTS ( SELECT * FROM user WHERE id_symbol=a.id) UND id_symbol des users
Nicht UND, sondern OR a.id = (SELECT id_symbol FROM users WHERE die User-Id passt).
dedlfix.
select * from datei left join users on users.datei_id = datei.id where users.id is null