SQL与4个表连接
这里有一个问题,我对外部/内部连接和多个条件有点困惑 我们有4个带-列的表:SQL与4个表连接,sql,join,Sql,Join,这里有一个问题,我对外部/内部连接和多个条件有点困惑 我们有4个带-列的表: 表|车辆-id |品牌|类型|许可证 表|设备-id |名称|说明 表|距离-id|车辆|日期|距离 表|车辆|设备-id |车辆| id |设备 第一个查询应该显示所有配备“灭火器”且昨天已经驾驶过的汽车 我已尝试编写此查询: SELECT table_cars_equipments.id_car FROM table_equipments INNER JOIN table_cars_equipments
SELECT table_cars_equipments.id_car
FROM table_equipments
INNER JOIN table_cars_equipments
ON table_equipments.id = table_cars_equipments.id_equipment
AND table_equipments.name LIKE 'fire extinguisher';
虽然我仍然不知道如何添加昨天驾驶过的车辆,但我不知道如何与表
表\u distance
建立连接 将另一个连接到表中,并将另一个连接到表中。然后在WHERE
子句中添加一个条件,以仅获取昨天驾驶过的车辆。大概是这样的:
SELECT
c.id,
c.brand,
c.type,
c.license
ce.id_car,
...
from table_equipments AS e
INNER JOIN table_cars_equipments AS ce ON e.id = ec.id_equipment
INNER JOIN table_cars AS c ON c.id = ce.id_car
INNER JOIN table_distances AS d ON d.id_car = c.id
WHERE e.name LIKE 'fire extinguisher'
AND d.date = ?;
注意:我在表c
和e
等中使用了别名,而不是表的全名。添加另一个与表table\u cars
连接,并在表table\u distance
中添加另一个。然后在WHERE
子句中添加一个条件,以仅获取昨天驾驶过的车辆。大概是这样的:
SELECT
c.id,
c.brand,
c.type,
c.license
ce.id_car,
...
from table_equipments AS e
INNER JOIN table_cars_equipments AS ce ON e.id = ec.id_equipment
INNER JOIN table_cars AS c ON c.id = ce.id_car
INNER JOIN table_distances AS d ON d.id_car = c.id
WHERE e.name LIKE 'fire extinguisher'
AND d.date = ?;
请注意:我在表格c
、e
等中使用了别名,而不是表格的全名。d.date=NOW()-间隔1天
表示昨天[Mahmoud Gamal]谢谢@Oleksandr,如果这是解决方案,请单击此答案旁边的复选框,以便其他人知道它已解决且不再打开。。。。它还帮助其他寻找类似问题的人,以及解决问题的方法。@DRapp谢谢,我是stackoverflow的新手。下次我会知道的@奥列克桑德,没问题。。。每个人都会在某个时间开始d.date=NOW()-间隔1天
表示昨天[Mahmoud Gamal]谢谢@Oleksandr,如果这是解决方案,请单击此答案旁边的复选框,以便其他人知道它已解决且不再打开。。。。它还帮助其他寻找类似问题的人,以及解决问题的方法。@DRapp谢谢,我是stackoverflow的新手。下次我会知道的@奥列克桑德,没问题。。。每个人都会在某个时间启动您应该指定您的db引擎,因为它们不都使用相同的语法来指定“昨天”。此外,使用不带通配符的关键字“like”与使用等号基本相同。您应该指定db引擎,因为它们不都使用相同的语法来指定“昨天”。此外,使用不带通配符的关键字“like”本质上与使用等号相同。