I持って、次のテーブルを結合し、時間条件。予約されている場合は、予約状況を表示します。予約されていない場合は、NULL
を表示する必要があります。MySQLのクエリは
私は基本的なクエリで起動した場合..
mysql> select * from room r, booking b where r.id = b.room_id;
+----+----------+---------+---------------------+---------------------+----------------+
| ID | NAME | ROOM_ID | START | END | GUEST |
+----+----------+---------+---------------------+---------------------+----------------+
| 1 | Room 101 | 1 | 2016-04-01 00:00:00 | 2016-04-30 00:00:00 | Dorian Gray |
| 1 | Room 101 | 1 | 2016-05-03 00:00:00 | 2016-05-20 00:00:00 | Vanessa Ives |
| 1 | Room 101 | 1 | 2016-05-21 00:00:00 | 2016-05-30 00:00:00 | Ethan Chandler |
| 2 | Room 102 | 2 | 2016-05-06 00:00:00 | 2016-05-18 00:00:00 | John Clare |
+----+----------+---------+---------------------+---------------------+----------------+
それはOK動作しますが、それは私が欲しいものではありません...参加左に見てみましょう...それでも
mysql> select * from room r left join booking b on r.id = b.room_id;
+----+----------+---------+---------------------+---------------------+----------------+
| ID | NAME | ROOM_ID | START | END | GUEST |
+----+----------+---------+---------------------+---------------------+----------------+
| 1 | Room 101 | 1 | 2016-04-01 00:00:00 | 2016-04-30 00:00:00 | Dorian Gray |
| 1 | Room 101 | 1 | 2016-05-03 00:00:00 | 2016-05-20 00:00:00 | Vanessa Ives |
| 1 | Room 101 | 1 | 2016-05-21 00:00:00 | 2016-05-30 00:00:00 | Ethan Chandler |
| 2 | Room 102 | 2 | 2016-05-06 00:00:00 | 2016-05-18 00:00:00 | John Clare |
| 3 | Room 103 | NULL | NULL | NULL | NULL |
+----+----------+---------+---------------------+---------------------+----------------+
、それを重複を示しています...のは、以上の条件で試してみましょう:
mysql> select * from room r left join booking b on r.id = b.room_id where b.start<now() and b.end>now();
+----+----------+---------+---------------------+---------------------+--------------+
| ID | NAME | ROOM_ID | START | END | GUEST |
+----+----------+---------+---------------------+---------------------+--------------+
| 1 | Room 101 | 1 | 2016-05-03 00:00:00 | 2016-05-20 00:00:00 | Vanessa Ives |
| 2 | Room 102 | 2 | 2016-05-06 00:00:00 | 2016-05-18 00:00:00 | John Clare |
+----+----------+---------+---------------------+---------------------+--------------+
は「ルーム103」は示されていないので、[OK]を...しかし、間違った(それは予約ではないです)。.. 。
+----+----------+---------+---------------------+---------------------+--------------+
| ID | NAME | ROOM_ID | START | END | GUEST |
+----+----------+---------+---------------------+---------------------+--------------+
| 1 | Room 101 | 1 | 2016-05-03 00:00:00 | 2016-05-20 00:00:00 | Vanessa Ives |
| 2 | Room 102 | 2 | 2016-05-06 00:00:00 | 2016-05-18 00:00:00 | John Clare |
| 3 | Room 103 | NULL | NULL | NULL | NULL |
+----+----------+---------+---------------------+---------------------+--------------+
任意のアイデア:
私はこのような何かを取得したいのですが?
sqlfiddleはありますか? – Strawberry
私はちょうど1つを作成しました:) http://sqlfiddle.com/#!9/52b53 – hosselausso