我有产品,供应商,供应商的可用日期和预订表。目前,我的搜索功能只能搜索供应商可用日期,但不能搜索预订表。我使用供应商和供应商可用日期之间的左连接,并与选定的日期,时间和小时进行比较。搜索结果有效。如何在预订表中搜索?
产品表
id | vendor_id | title | description
供应商表
id | name
供应商可用表
id | vendor_id | d_day | d_start_hour | d_start_minute | d_end_hour | d_end_minute
预订表
id | vendor_id | d_date | d_day | d_start_hour | _start_minute
以下是我根据所选日期,start_hour和start_minute选择产品的方式:
SELECT * FROM product
LEFT JOIN ( SELECT * FROM vendor GROUP BY id ) vendor
ON vendor.id = product.vendor_id
LEFT JOIN ( SELECT * FROM vendor_available GROUP BY id) vendor_available
ON vendor_available.vendor_id = product.vendor_id
WHERE ( d_day = '4'
AND (CONCAT(d_start_hour, '.' , d_start_minute) + 0.0) <= '12.15'
AND (CONCAT(d_end_hour, '.', d_end_minute) + 0.0) >= '12.15')
4
是选定的日期,12.15
是客户端选定的小时和选定的分钟。
当用户选择12.15(12.15pm)时,查询将检查供应商可用时间之间的哪个产品可用。
如何在预订表中使用对面联合,以便已预订的产品不会显示给用户?
答案 0 :(得分:0)
使用LEFT JOIN tbl
时,将其添加到WHERE
子句(而不是ON
子句)是正常的
AND tbl.id IS NULL
这表示当tbl
中没有行时,您希望仅返回 的结果。