SQL查询基于两个条件提取

时间:2014-06-26 15:34:52

标签: sql inner-join

我在这个结构中有四个表

cars - id | brand | type | license
equipments - id | name | description
distances - id_car | date | distance
cars_equipments - id_car | id_equipment

我必须提取昨天开车的所有装有“灭火器”的汽车......

到目前为止我设法创建了这个

SELECT cars.id, cars.brand, cars.type, cars.license, cars_equipments.id_car 
FROM equipments 
INNER JOIN cars_equipments ON equipments.id = cars_equipments.id_equipment 
INNER JOIN cars ON cars.id = cars_equipments.id_car 
INNER JOIN distances ON distances.id_car = cars.id
WHERE equipments.name LIKE 'fire extinguisher'

这只返回一辆带有“灭火器”的汽车,因此它无法正常工作,如果我添加

AND distances.date = DATE_SUB(NOW(), INTERVAL 1 DAY)

将它与最后一天结合起来它不起作用。

1 个答案:

答案 0 :(得分:0)

它对你有用吗?

SELECT cars.id, cars.brand, cars.type, cars.license, cars_equipments.id_car 
FROM cars 
   INNER JOIN cars_equipments ON cars.id = cars_equipments.id_car 
   INNER JOIN equipments ON equipments.id = cars_equipments.id_equipment 
   INNER JOIN distances ON distances.id_car = cars.id
WHERE equipments.name LIKE 'fire extinguisher'
AND distances.date >= dateadd(day,datediff(day,0,GETDATE()),-1)
AND distances.date < dateadd(day,datediff(day,0,GETDATE()),0)

选中此sql fiddle