2017-05-24 42 views
-2

我的产品,供应商,供应商的可用天及预订表的对面。目前,我的搜索功能只能通过供应商当天搜索,而不能搜索预订表。我使用供应商和供应商之间的左连接,并与选定的日期,时间和小时进行比较。搜索结果起作用。如何通过预订表进行搜索?选择联合数据

产品列表

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时15分,该查询将检查哪个产品是供应商可用的时间之间提供。

如何使用反工会与预订表,这样它已经预订产品不显示给用户?

+0

参见:[?我为什么要提供什么,在我看来是一个非常简单的SQL查询的MCVE(https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an -mcve换什么,似乎对我将要-A-极简单的SQL查询) – Strawberry

回答

0

当使用LEFT JOIN tbl,这是正常的它添加到WHERE条款(不是ON条款)

AND tbl.id IS NULL 

这是说要返回结果只有当没有行tbl