ขอความช่วยเหลือหน่อยครับ เกี่ยวกับการ search แบบ join ตารางครับ
คือว่าผมมีตารางอยู่ 3 ตารางครับ
1. roomtype
- roomtype_id PK
- roomtype_name
2. room
-room_id PK
-roomtype_id
-status (ว่าง,ไม่ว่าง)
3. roomdetail
-room_id PK
-book_id PK
-check_in
-check_out
จากรูปครับถ้าหากว่าผมเลือกประเภทห้องพัก เลือกวันที่ check in , check out แล้วกด submit แล้วต้องเข้าไปเช็ค ที่ตาราง room ว่ามีห้องว่างหรือป่าว ถ้าหากว่าว่างก็วิ่งไปเช็ค ที่ตาราง roomdetail ว่าวันที่ check in , check out ว่ามีห้องอะไรว่างบ้าง แล้วนำมาโชว์
ผมเขียนอย่างนี้ถูกหรือป่าวครับ
<?
include "Connections/conn_search.php";
$query_rsSearch="select * from room,roomtype,roomdetail";
/*$query_rsSearch="SELECT * FROM room WHERE room.roomtype_id = ".$Lroomtype." NOT EXISTS (SELECT * FROM roomdetail WHERE roomdetail.room_id = room.room_id AND (roomdetail.check_in >=".$checkin." AND roomdetail.check_out <=".$checkout.") )";*/
$query_rsSearch= 'EXPLAIN select t.roomtype_name,r.room_id from roomtype t,room r, roomdetail d where t.roomtype_name = \'".$Lroomtype."\' and d.check_out < ".$checkin." and r.status = \'1\' and t.roomtype_id=r.roomtype_id and r.room_id = d.room_id';
mysql_select_db($newDB, $connector);
$rsSearch= mysql_query($query_rsSearch, $connector) or die(mysql_error());
$row_rsSearch=mysql_fetch_assoc($rsSearch);
$totalRows_rsSearch=mysql_num_rows($rsSearch);
?>
หรือว่าใครพอจเแนะนำได้บ้างครับ ขอบคุณคร้าบ
1. roomtype
- roomtype_id PK
- roomtype_name
2. room
-room_id PK
-roomtype_id
-status (ว่าง,ไม่ว่าง)
3. roomdetail
-room_id PK
-book_id PK
-check_in
-check_out
จากรูปครับถ้าหากว่าผมเลือกประเภทห้องพัก เลือกวันที่ check in , check out แล้วกด submit แล้วต้องเข้าไปเช็ค ที่ตาราง room ว่ามีห้องว่างหรือป่าว ถ้าหากว่าว่างก็วิ่งไปเช็ค ที่ตาราง roomdetail ว่าวันที่ check in , check out ว่ามีห้องอะไรว่างบ้าง แล้วนำมาโชว์
ผมเขียนอย่างนี้ถูกหรือป่าวครับ
<?
include "Connections/conn_search.php";
$query_rsSearch="select * from room,roomtype,roomdetail";
/*$query_rsSearch="SELECT * FROM room WHERE room.roomtype_id = ".$Lroomtype." NOT EXISTS (SELECT * FROM roomdetail WHERE roomdetail.room_id = room.room_id AND (roomdetail.check_in >=".$checkin." AND roomdetail.check_out <=".$checkout.") )";*/
$query_rsSearch= 'EXPLAIN select t.roomtype_name,r.room_id from roomtype t,room r, roomdetail d where t.roomtype_name = \'".$Lroomtype."\' and d.check_out < ".$checkin." and r.status = \'1\' and t.roomtype_id=r.roomtype_id and r.room_id = d.room_id';
mysql_select_db($newDB, $connector);
$rsSearch= mysql_query($query_rsSearch, $connector) or die(mysql_error());
$row_rsSearch=mysql_fetch_assoc($rsSearch);
$totalRows_rsSearch=mysql_num_rows($rsSearch);
?>
หรือว่าใครพอจเแนะนำได้บ้างครับ ขอบคุณคร้าบ
ลองนำ query ไปทดสอบบน phpmyadmin ดูสิครับ ว่าคำตอบที่ได้มันถูกต้องตามที่ต้องการหรือเปล่า
ปกติแล้วเราไม่ต้องตรวจสอบวันที่ check out ครับ เพราะโดยปกติเราจะไม่รู้ว่าเขาจะอยู่กี่วัน นอกเสียจากจะรู้จริงๆ
การตรวจสอบว่าห้องว่างหรือเปล่า ก็เอาเวลาที่ลูกค้าจะเข้า มาหาว่า ห้องว่างหรือไม่ เท่านั้น ส่วน query จะเป็นอย่างไรนั้นมันก็แล้วแต่การออกแบบตาราง ซึ่งผมคงตอบไม่ได้
SELECT room_id FROM room_table WHERE $chkout < chkin_date OR $chkin > chkout_date
ส่วนการแสดงผลการค้นหา ถ้าจะแสดงในหน้าเดิม คงต้องศึกษา Ajax ถึงจะทำได้ มีตัวอย่างบนเว็บครับ