$strSQL = "SELECT house.house_id,
house.house_name,
house.house_bedroom,
house.house_toilet,
house.house_functions,
house.house_price_normal,
house.house_price_weekday,
house.house_price_weekend,
house.house_map
FROM house where house.house_id NOT IN (SELECT house.house_id FROM house INNER
JOIN booking ON house.house_id = booking.booking_id WHERE NOT (
booking_chkin > '$start' or booking_chkout < '$start'))";
where house_bedroom = '$bedroom'
or (
house.house_id NOT IN (SELECT house.house_id FROM house INNER
JOIN booking ON house.house_id = booking.booking_id WHERE NOT (
booking_chkin > '$start' or booking_chkout < '$start'))
)
หรือ Code (SQL)
where
(
house.house_id NOT IN (SELECT house.house_id FROM house INNER
JOIN booking ON house.house_id = booking.booking_id WHERE NOT (
booking_chkin > '$start' or booking_chkout < '$start'))
) or house_bedroom = '$bedroom'
เอาวงเล็บมาช่วยแยก condition จะได้เห็นชัดเจน
ปล.สำหรับความต้องการยังไม่ชัดเจน ลองอธิบายเพิ่มหน่อย ข้างบนเป็นแค่ tip ในการเขียน condition
where (
NOT EXISTS # เลือก รายการที่ไม่พบว่ามีการจอง
(
# เลือก รายการ booking ที่ตรงกันกับ house_id
SELECT * FROM booking
WHERE house.house_id = booking_id # อ้างอิง house_id
AND (
( '$start' between booking_chkin and booking_chkout) # วันเริ่มจองอยู่ในช่วงการจองแล้ว
OR
( '$last' between booking_chkin and booking_chkout) #วันสุดท้ายอยู่ในช่วงการจองแล้ว
OR
( booking_chkin between '$start'and '$last' ) # วันเริ่มต้นจองแล้ว อยู่ระหว่างวันที่จองใหม่
OR
( booking_chkout between '$start'and '$last' ) # วันสุดท่ายจองแล้ว อยู่ระหว่างวันที่จองใหม่
)
)
)
AND house_bedroom = '$bedroom' # เอาเฉพาะประเภทห้องที่ต้องการ