2012-03-04 22 views
0

データベースに2つのテーブルがあります。複数のSQLテーブルを1つのステートメントで照会する

と呼ばれるものとroom_bookingと呼ばれるものがあります。

客室と客室の予約には同じ列がありますroom_id

私は、特定の日付でホテルをチェックする次のSQLクエリ起草しました:

SELECT DISTINCT room_id FROM `room_booking` WHERE date_booked='$date'"; 

をしかし、今、私はroom_bookingに情報各部屋にアクセスするためのIDのリストを使用する必要があります。私が興味を持っているフィールドは、の名前room_sizeです。

どうすればこの問題を解決できますか?私は共同のSQLステートメントが必要でしょうか?

ありがとうございます!

答えて

2

はいを​​次のようにJOINステートメントを使用する必要があります。結果を得るには、両方のテーブルJoinする必要があります。あなたが使用していない場合は、複数のテーブルからデータを取得している場合、それはあなたがcartison与える合流

SELECT room_id FROM `room_booking` as rb,room as r WHERE date_booked='$date' and r.room_id=rb.room_id 

好きなようにそれを変更することができますあなたは間違ってクエリを作成している

SELECT r.roomid,r.room, r.room_size,date_booked 
FROM room as r left JOIN room_booking as rb ON r.room_id=rb.room_id 
WHERE date_booked='$date' 
+0

2つの質問@Teez:** 1)**どのように各テーブルの行をエコーし​​ますか? '$ row ['room_id']'(これはどちらの表にもあります)と '$ row ['date_booked']'(room_booking表にあります)を使用していますか?** 2)** WHERE date_booked日付が '2012-01-01'の形式であれば、<> '$ date' 'も使えますか? – methuselah

+1

@methuselah:1)はい、$ row ['room_id']と$ row ['date_booked']を使う必要がありますが、select節2で指定する必要があります。 –

2

はい、あなたは

$query="SELECT DISTINCT room, room_size FROM room JOIN `room_booking` ON room.room_id=`room_booking`.room_id WHERE date_booked='$date' "; 
0

の下

試してみてくださいデータの積。

関連する問題