如果按日期提供给客户,我试图向客户展示不同的计划。 例如,如果客户选择8月2日至4日之间的日期并且想要查看计划
我的问题是在运行mysql查询时,当有计划售罄时,4个8月查询仍显示结果。
From 02-04 august
Plans available
On 02 -> 2
On 03 -> 0
我的目标是当客户想要在8月2日至4日之间购买1套计划时获得0行。
MySQL查询:
SELECT bs.`sales_available` sale_to,hp.`package_name`
FROM `tbl_booking_categories` bc
LEFT JOIN `tbl_booking_suite` bs ON bc.`id`=bs.`booking_cat_id`
LEFT JOIN `tbl_holiday_packages` hp ON hp.`id`=bc.`package_id`
LEFT JOIN `tbl_room_type` rt ON rt.`id`=bc.`room_type_id`
WHERE bc.`room_type_id`='5' AND bs.booked_date IN ('2017-08-10','2017-08-11') AND bs.`sales_available`>=1
GROUP BY bc.`package_id`
答案 0 :(得分:0)
尝试假设您的表结构(以最小的方式)。这是对的吗?
如果我的假设是正确的,“INNER-ing”JOIN表应解决您的问题?不是吗?
SELECT bs.`sales_available` sale_to
,hp.`package_name`
FROM `tbl_booking_categories` bc
INNER JOIN `tbl_booking_suite` bs ON bc.`id` = bs.`booking_cat_id`
INNER JOIN `tbl_holiday_packages` hp ON hp.`id` = bc.`package_id`
INNER JOIN `tbl_room_type` rt ON rt.`id` = bc.`room_type_id`
WHERE bc.`room_type_id` = '5'
AND bs.booked_date BETWEEN '2017-08-10' AND '2017-08-11'
AND bs.`sales_available` >= 1
GROUP BY bc.`package_id`