Gegenteil von INNER JOIN?
Kuno
- datenbank
0 Cheatah0 Kuno
0 Vinzenz Mai0 Kuno
HI!
ich such sowas wie das gegenteil von INNER/LEFT JOIN (mySQL).
INNER JOIN erzwingt ja ein Matching in der JOIN-Tabelle.
Ich möchte gerne alle Datensätze aus der Haupttabelle anzeigen, bei denen der JOIN zu keinem Ergebnis kommt.
Beispiel:
SELECT a.name FROM users a LEFT JOIN b.photos ON b.userid=a.id
Im Gegensatz zum obigen Statement möchte ich aber nur alle Datensätze aus "users" angezeigt bekommen, der kein Gegenstück in "photos" hat.
Also quasi das direkte Gegenteil von einem INNER JOIN.
Hi,
Ich möchte gerne alle Datensätze aus der Haupttabelle anzeigen, bei denen der JOIN zu keinem Ergebnis kommt.
das Gegenteil eines INNER JOIN ist der OUTER JOIN. Überraschung! ;-)
Cheatah
Komisch, das kennt mein mySQl irgendwie nicht....
Hallo
Beispiel:
SELECT a.name FROM users a LEFT JOIN b.photos ON b.userid=a.id
>
> Im Gegensatz zum obigen Statement möchte ich aber nur alle Datensätze aus "users" angezeigt bekommen, der kein Gegenstück in "photos" hat.
siehe MySQL-Handbuch, Abschnitt [Join](http://dev.mysql.com/doc/refman/5.0/en/join.html):
<zitat>
If there is no matching row for the right table in the ON or USING
part in a LEFT JOIN, a row with all columns set to NULL is used for
the right table. You can use this fact to find rows in a table that
have no counterpart in another table:
</zitat>
In Deinem Fall:
~~~sql
SELECT
a.name
FROM users a
LEFT JOIN photos b
ON b.userid=a.id
WHERE b.userid IS NULL
Freundliche Grüße
Vinzenz
Ah mist da hätt ich auch selbst drauf kommen können...
Danke für die Beteiligung und den Tipp mit "IS NULL" !