LEFT JOIN ALS neue Spalte?
Ich versuche zu tun, mehrere LEFT JOIN auf die gleiche Spalte einer Tabelle.Muss ich LEFT JOIN "Tabelle2.Worte" mit "Tabelle1.Farbe" und "Tabelle2.Worte" mit "Tabelle1.Lebensmittel". Wie mache ich das? und kann ich es tun, indem der linke sich "Tabelle2.Worte," eine neue Spalte?
Mein SQL-code:
SELECT table1.id, table1.color, table2.words
FROM table1
LEFT JOIN table2 ON table1.color=table2.id
LEFT JOIN table2 ON table1.food=table2.id
Tabelle1:
--------------------------------
| id | color | food |
--------------------------------
| 1 | 1 | 3 |
| 2 | 1 | 4 |
| 3 | 1 | 3 |
| 4 | 1 | 4 |
| 5 | 2 | 3 |
| 6 | 2 | 4 |
| 7 | 2 | 3 |
| 8 | 2 | 4 |
--------------------------------
Tabelle2:
---------------------------
| id | words |
---------------------------
| 1 | yellow |
| 2 | blue |
| 3 | cookies |
| 4 | milk |
---------------------------
, Was Im Versuch, Ausgabe:
----------------------------------------
| id | colorname | foodname |
----------------------------------------
| 1 | yellow | cookies |
| 2 | yellow | milk |
| 3 | yellow | cookies |
| 4 | yellow | milk |
| 5 | blue | cookies |
| 6 | blue | milk |
| 7 | blue | cookies |
| 8 | blue | milk |
----------------------------------------
Hinweis: ich kann nicht ändern, die Tabellen-Strukturen.
- Aus den Daten, die Sie präsentieren, sieht es aus wie diese kann getan werden, mit geraden, inner joins -- sind Links Verknüpfungen wirklich notwendig?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Beispieldaten
Ergebnisse Meiner Abfrage
UPDATE-2012-05-14 19:10 EDT
In der event es sind die Werte, die für Lebensmittel oder Farbe, die nicht existieren, hier ist die angepasste Abfrage:
Will ich hinzufügen, Zeilen auf Tabelle1 und führen diese neue Abfrage
Irgendwelche ungültigen Daten
LEFT JOIN
im noch benötigt.versuchen:
Hier ist die Abfrage:
Hinweis: Es sieht aus Ihren Daten, dass eine
LEFT JOIN
ist nicht erforderlich. Wenn es keine Zeilen in "Tabelle1", in denen entweder die Farbe oder Lebensmittel, die null sind, dann können Sie aufhören, dieLEFT
.