Selektion umkehren

morgenstern

Erfahrenes Mitglied
Hi!

ich habe folgende Datenbankstruktur:

Tabelle 1:
ID
kategorie

Tabelle 2:
ID
kategorieID
userID

Ich habe nun einem User 2 von 4 Kategorien zugeordnet, im Adminmenü möchte ich jetzt aber beim Hinzufügen einer Kategorie zu einem User, nur jene Kategorien zur Auswahl haben, welche er noch nicht hat.

Zur Auswahl welche er schon hat nehme ich dieses SELECT:

PHP:
SELECT * FROM tabelle_1 inner join tabelle_2 on tabelle_1.ID = tabelle_2.kategorieID WHERE tabelle_2.userID = $userID

Die variable $userID wird übergeben.(Den * wähle ich nur im forum, damit der Befehl kürzer bleibt)

Das Resultat ist, dass jene Kategorien aufgelistet werden, die dieser User besitzt.
Jetzt möchte ich dieses Ergebnis umkehren, nur jene anzeigen, die dieser User nicht besitzt, und diese in ein Pulldownmenü ausgeben (Das Pulldownmenü ist kein Problem ;) )

Ich stehe irgendwie auf der Leitung.

Danke im voraus.
 
SELECT * FROM tabelle_1 RIGHT JOIN tabelle_2 on tabelle_1.ID = tabelle_2.kategorieID WHERE tabelle_2.userID = $userID AND tabelle_1.ID is NULL
 
Danke.

Ich verstehe zwar wieso "is NULL" (Platzhalter) jedoch funktioniert es nicht, bekomme keine Ausgabe. Bei "is NOT NULL" bekomme ich aber eine Ausgabe.

Jetzt verstehe ich nicht was nicht funktioniert. :(
 
Hast du gesehen, dass ich aus deinem INNER JOIN einen RIGHT JOIN gemacht habe? Ohne den funktioniert das nicht, was du machen willst.
 
Oha... muss nochmals den query überarbeiten... man sollte die DB erst nachbauen, bevor man Müll erzählt.

Ich richte es nach meinem Mittagessen ok?
 
So jetzt hab ichs... (Mannomann... manchmal frag ich mich über mich selbst):

SELECT tabelle_1.kategorie FROM tabelle_1 LEFT JOIN tabelle_2 ON tabelle_1.ID = tabelle_2.kategorieID WHERE tabelle_2.userID != $userID OR tabelle_2.userID is NULL

So, das geht definitiv!

Bei der Variable musst halt gegebenenfalls noch aufpassen wegen den Anführungszeichen, aber ich glaub, das ist dir auch klar.
 
Jop das geht. Nur habe ich jetzt im Pulldownmenu jede Kategorie so oft, wie user drinnen stehen, die zu dieser Kategorie gehören :(

Meine logische Lösung:

Alle Kategorien hernehmen, alle Kategorien des Users hernehmen -> diese aus dem Pulldownmenü entfernen.

Nur wie? :(
 
Ah, kein Problem, einfach ein DISTINCT vorneranhängen:
SELECT DISTINCT tabelle_1.kategorie FROM ... etc.

[Edit] Vergiss das... geht so nicht... [/EDIT]
 
Zuletzt bearbeitet:
Ich wills nur mal versuchen, testen musst du selber:

Code:
SELECT tabelle_1.kategorie FROM tabelle_1 LEFT JOIN tabelle_2 ON tabelle_1.ID = tabelle_2.kategorieID WHERE tabelle_2.userID != $userID OR tabelle_2.userID is NULL GROUP BY kategorie
 

Neue Beiträge

Zurück