Entschuldigung für den minimalistischen Titel, aber ich weiß nicht, wie ich es kurz beschreiben soll. Ich habe drei Tabellen:SQL JOIN many-to-many
Die Tabelle der Gruppen
ID | Genre
-----------------
1 | Action
2 | Adventure
3 | Drama
Viele zu viele Tabellen
GroupID | ElementID
-----------------
3 | 1
1 | 2
2 | 2
2 | 3
3 | 3
Und die Tabelle der Elemente
ID | Element
-----------------
1 | Pride and Prejudice
2 | Alice in Wonderland
3 | Curious Incident Of A Dog In The Night Time
Alles ist in Ordnung und sehr einfach. Die SELECT-I zu erreichen versuche, ist die folgende
ID | Element | Genre
-------------------------------------------------------------
1 | Pride and Prejudice | Drama
2 | Alice in Wonderland | NULL
3 | Curious Incident Of A Dog In The Night Time | Drama
I alle die Elemente aus der Tabelle Elemente und setzen das Genre Feld Drama- oder null auswählen möchten.
Ich versuche dies in MySQL zu tun.
Vielen Dank im Voraus
Ich sehe keine Notwendigkeit, eine NULL-Spalte zurückzugeben. warum nicht ein WHERE groups.ID! = '3' oder so etwas verwenden. bisides, dass, wenn Sie laufen in Mysql 5.6 Sie Geige sind, wird es in anderer Reihenfolge zurückkehren! zuerst die Nicht-NULL-Spalten, dann die NULL-Spalte. http://sqlfiddle.com/#!9/01cf3/1/0 Sie könnten eine ORDER BY-Anweisung verwenden. –
Meine Antwort beantwortete die Bedürfnisse der Frage, die forderte, dass NULL-Werte angezeigt werden, wenn das Genre des Buches (vorausgesetzt, dass es sich um Bücher handelt) nicht bekannt ist. Abfragen mit Outer-Joins sind nützlich, wenn Sie _all_ die Daten aus einer der Tabellen in der Abfrage anzeigen möchten, unabhängig davon, ob an einer anderen Stelle Daten vorhanden sind. Die obige Abfrage kann beispielsweise in einer Anwendung nützlich sein, die eine Büchersammlung verwaltet: Sie können alle Bücher anzeigen und diejenigen identifizieren, die noch nicht mit einem Genre gekennzeichnet sind. Wenn Sie die Genres für Bücher sehen, die ** markiert sind, können Sie sich für das Genre eines anderen Buches entscheiden. –