问题:
我试图弄清楚如何根据 SQL 语句中的条件连接表。我花了一个小时搜索 Google、SO、各种网站和 MYSQL 手册,但我就是找不到我想做的正确语法。
我无法发布我正在尝试使用的确切查询,但为了简单起见,我将发布一个简化版本。
设想:
假设我有三个表,a
= 人表,b
= 地址表和c
= 车表。
Tableb
将始终连接到 table a
,因为一个人总是住在一个地址,但只有当“car_id”字段中的值大于 0c
时才应该连接到table,因为有车是可选的。a
查询:
SELECT a.firstname, a.lastname, a.gender, a.address_id, b.address_firstline, b_address_secondline, b.postcode, c.car_manufacturer, c.car_model
FROM a
INNER JOIN b ON b.id = a.address_id
INNER JOIN c ON c.id = a.car_id AND a.car_id > 0
WHERE a.id = 1
上面的查询对于 id 为 1 的人来说运行良好,因为他拥有汽车。但是,如果为 id 为 2 的人运行查询,则查询将返回 0 行,因为她没有汽车。
如何使第二个 JOIN 成为可选?我试过使用 IF ELSE 语句,但我总是遇到语法错误。有人可以在这里指出我正确的方向吗?提前致谢