0

施設テーブルと予約テーブルの 2 つのテーブルがあります。

施設テーブルには、

  • 施設ID
  • タイプ
  • 名前
  • 可用性

予約表、

  • ID
  • メンバーID
  • 施設ID
  • チェックインする日
  • チェックイン時間

これは、予約された詳細のみを返す私のクエリです。予約されていない施設の詳細を返すクエリを作成するにはどうすればよいですか?

SELECT Facility.[Facility Name], Facility.[Facility Type] 
FROM Facility INNER JOIN Reservation on Facility.FacilityID = Reservation.FacilityID
WHERE Reservation.FacilityID = (
    SELECT FacilityID 
    FROM Reservation 
    WHERE MemberID = '" & txtMemberID.Text & "' 
    AND [Check-in date] ='" & lstDate.SelectedItem.ToString & "')
4

1 に答える 1

0

LEFT OUTER JOIN と IS NULL を使用して、予約テーブルにレコードがない行のみを返すことができます。

次のクエリは、FacilityID、MemberID、および Check-In 日付が Reservation テーブルに一致しないすべての施設を返します。メンバーの予約とチェックイン日があるかどうかを確認したい場合は、MemberID と Check-In Date の部分を削除できます。

SELECT Facility.[Facility Name], Facility.[Facility Type] 
FROM Facility 
    LEFT OUTER JOIN Reservation on Facility.FacilityID = Reservation.FacilityID
    AND MemberID = '" & txtMemberID.Text & "' // pull in based on certain member
    AND [Check-in date] ='" & lstDate.SelectedItem.ToString & "') // pull in based on certain date
WHERE Reservation.ID IS NULL
于 2013-03-10T04:10:31.183 に答える