2017-09-29 3 views
0

Warum diese AbfrageAbfrage mit Unterabfrage keinen Wert zurückgibt, die

SELECT * 
FROM tbl X 
WHERE NOT EXISTS (SELECT * FROM tbl Y WHERE X.end_date=Y.start_date) 
ORDER BY accommodation_id, start_date 

gibt nicht die folgende Zeile zurückgegeben werden sollte?

enter image description here

prüfte ich die Zeile nicht zurückgegeben wird AND accommodation_id = 7049 zur WHERE Klausel hinzugefügt, so dass die resultierende Abfrage ist:

SELECT * FROM wp_byt_accommodation_vacancies X WHERE NOT EXISTS(SELECT * FROM wp_byt_accommodation_vacancies Y WHERE X.end_date=Y.start_date) AND accommodation_id = 7049 ORDER BY accommodation_id, start_date 

Ich überprüfte es gibt keine Zeilen mit start_date = '2017-04-08 für diese accommodation_id die Verwendung von folgende Abfrage:

SELECT * FROM wp_byt_accommodation_vacancies WHERE accommodation_id = 7049 AND start_date = '2017-04-07' 
+0

Bitte bearbeiten Sie Ihre Frage und zeigen deutlich zu verknüpfen sowohl die aktuelle und erwartete Ausgabe, wie _text_, nicht als Bilder. –

+0

Bitte senden Sie Datenmuster aus beiden Tabellen –

Antwort

1

Sie sollten folgende Abfrage verwenden y

SELECT * 
FROM tbl X 
WHERE NOT EXISTS ( SELECT * 
        FROM tbl Y 
        WHERE X.end_date=Y.start_date 
        AND X.accommodation_id = Y.accommodation_id) 
ORDER BY accommodation_id, start_date 

Sie haben vergessen, den Schlüssel X.accommodation_id = Y.accommodation_id

Verwandte Themen