MYSQL - 如果每个日期计数器与条件匹配,则显示2个日期之间的数据

时间:2017-08-02 10:32:31

标签: mysql database

如果按日期提供给客户,我试图向客户展示不同的计划。 例如,如果客户选择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`

1 个答案:

答案 0 :(得分:0)

尝试假设您的表结构(以最小的方式)。这是对的吗?

Relationships between tables

如果我的假设是正确的,“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`