2017-01-30 5 views
-1

Ich habe zwei Tabellen, tblRooms und tblReservations. Jede Tabelle hat eine UnitId.SQL Server-Abfrage-Fragen

Wenn ein Raum in tblRooms für ein bestimmtes Datum in einen Datensatz reserviert ist, mit den UnitId und dem Datum der Buchung in tblReservations erstellt wird.

Wie würde ich eine SQL-Abfrage schreiben, um alle Räume in tblRooms aufzulisten, die keine Reservierung an einem bestimmten Datum in tblReservations haben?

Antwort

0

Verwendung LEFT JOIN:

SELECT t1.* 
FROM tblRooms t1 
LEFT JOIN tblReservations t2 
    ON t1.UnitId = t2.UnitId AND 
     t2.reservation_date = '2017-01-30' 
WHERE t2.UnitId IS NULL 
+0

Ich weiß sogar, wer das tun wird: D aber kann es einfach nicht beweisen. Ich habe Upvote gemacht, um deinen Downvote zu annullieren –

+0

Ja, @strawberry wird dies tun, wir alle wissen es. –

+0

Ich meinte nicht Erdbeere .. Ich habe ihn nicht regelmäßig hier gesehen –

0

Verwenden NOT EXISTS

SELECT * 
FROM tblRooms t 
WHERE NOT EXISTS (SELECT 1 
        FROM tblReservations tr 
        WHERE t.UnitId = tr.UnitId 
          AND reservation_date = '2017-01-30') -- pass specific date here 

Wo ein Spiel dort für eine UnitId innerhalb der Unterabfrage ist, dann ist die besondere UnitId werden nicht zurück

+1

Gibt es eine Grund für den Downvote? –

+0

Wer ist neu in dieser Community? Kann mir jemand sagen, warum meine Frage von dieser Community nicht gut angenommen wurde? –