2016-11-23 4 views
0

Ich habe 2 Tabellen, denen ich beitreten muss, aber aus irgendeinem Grund bekomme ich nicht das erwartete Ergebnis.NULL-Werte im linken Join können nicht angezeigt werden

Tabelle 1 enthält alle Daten des Jahres und Tabelle 2 enthält Daten für einige Daten. Ich habe folgendes:

Tabelle 1

+------------+ 
| dates | 
+------------+ 
| 2016-11-01 | 
| 2016-11-02 | 
| 2016-11-03 | 
| 2016-11-04 | 
| 2016-11-05 | 
| 2016-11-06 | 
| 2016-11-07 | 
| 2016-11-08 | 
| 2016-11-09 | 
| 2016-11-10 | 
+------------+ 

Tabelle 2

+------------+--------+----+ 
| dates | status | id | 
+------------+--------+----+ 
| 2016-11-01 |  1 | 1 | 
| 2016-11-02 |  1 | 1 | 
| 2016-11-03 |  1 | 1 | 
| 2016-11-04 |  1 | 2 | 
| 2016-11-05 |  1 | 2 | 
| 2016-11-06 |  1 | 2 | 
| 2016-11-07 |  1 | 1 | 
| 2016-11-08 |  1 | 2 | 
| 2016-11-09 |  1 | 1 | 
| 2016-11-10 |  1 | 1 | 
+------------+--------+----+ 

Erwartetes Ergebnis

+------------+--------+ 
| dates | Status | 
+------------+--------+ 
| 2016-11-01 | 1  | 
| 2016-11-02 | 1  | 
| 2016-11-03 | 1  | 
| 2016-11-04 | null | 
| 2016-11-05 | null | 
| 2016-11-06 | null | 
| 2016-11-07 | 1  | 
| 2016-11-08 | null | 
| 2016-11-09 | 1  | 
| 2016-11-10 | 1  | 
+------------+--------+ 

Aktuelles Ergebnis:

+------------+--------+ 
| dates | status | 
+------------+--------+ 
| 2016-11-01 |  1 | 
| 2016-11-02 |  1 | 
| 2016-11-03 |  1 | 
| 2016-11-07 |  1 | 
| 2016-11-09 |  1 | 
| 2016-11-10 |  1 | 
+------------+--------+ 

dies ist die Abfrage, die ich zur Zeit bin mit:

select 
    a.dates, 
    b.status 
from table1 a 
left join table2 b on a.dates = b.dates 
where b.id = 1; 

Leider nur es zeigt Daten, wo die ID 1 und überspringt die Nullwerte. Ich muss auch die Nullwerte sehen. Was mache ich falsch ???

Antwort

0

Sie benötigen das b.id = 1 Kriterium aus der where Klausel in der Join-Bedingung, da die where Klausel bewegen gilt für die gesamte resultset nach der Join:

select 
    a.dates, 
    b.status 
from table1 a 
left join table2 b on a.dates = b.dates and b.id = 1 
+0

Lieber Gott du bist Recht...!!! Du hast gerade mein Leben gerettet, mein Freund ... !!! Vielen Dank –

0

Versuch:

select 
    a.dates, 
    b.status 
from table1 a 
left join table2 b on a.dates = b.dates AND b.id = 1 
; 

in Ihrer Version erhalten Sie nur die Ergebnisse, wenn b.id = 1

Verwandte Themen