WHERE bevor JOIN

MK2001

Grünschnabel
Gibt es eine Möglichkeit, dass man zuerst ein where über eine Tabelle laufen lässt, und dann erst join't?

Alo folgendes Problem...

Tabelle Spielzeug: ID, beschreibung
Datensätze:
1, Auto
2, Bauklotz
3, Puppe

Tabelle SpielzeugNutzung: KindId, SpielzeugId, stunden
Datensätze:
1, 1, 60
1, 2, 60
2, 2, 90
2, 3, 90

Wie muss die Abfrage heißen, wenn ich wissen möchte, welches Spielzeug Kind 2 NICHT nutzt?

Bzw.: Wie muss die Abfrage heißen um herrauszufinden welche Spielzeuge Kind 3 nutzt? (Also um festzustellen das es keines Benutzt)

Ist bestimmt voll einfach... Aber einfach hängts heut.

Ich wollte mit einem left Join halt die Datensätze anzeigen lassen mit Kind.Id = NULL aber da die anderen kinder auch berücksichtigt werden,kommt einfach nichts.
 
Wenn ich dich richtig verstanden habe, kannst du es mit einem Subselect lösen:

SELECT * FROM Spielzeug WHERE ID NOT IN (SELECT SpielzeugId FROM SpielzeugNutzung WHERE KindId = 2)

Und wenn due wissen willst welches Spielzeug Kind 3 nutzt:

SELECT * FROM Spielzeug WHERE ID IN (SELECT SpielzeugId FROM SpielzeugNutzung WHERE KindId = 3)

Hoffe dass ist so wie due es wolltest.

mfG
ZeroEnna
 
Hallo,

sollte auch ohne Subselect lösbar sein:

Alle Spielzeuge, mit denen Kind 2 nicht spielt:
SQL:
SELECT `Spielzeug`.*
FROM `Spielzeug`
LEFT JOIN `SpielzeugNutzung` ON (`KindId` = 2 AND `SpielzeugId` = `ID`)
WHERE `KindId` IS NULL

Alle Spielzeuge, mit denen Kind 3 spielt:
SQL:
SELECT `Spielzeug`.*
FROM `Spielzeug`
LEFT JOIN `SpielzeugNutzung` ON (`KindId` = 3 AND `SpielzeugId` = `ID`)
WHERE `KindId` IS NOT NULL

Grüße,
Matthias
 
Zurück