【发布时间】:2013-03-24 05:47:51
【问题描述】:
问题:
我试图弄清楚如何根据 SQL 语句中的条件连接表。我花了一个小时搜索 Google、SO、各种网站和 MYSQL 手册,但我就是找不到我想做的正确语法。
我无法发布我正在尝试使用的确切查询,但为了简单起见,我将发布一个简化版本。
场景:
假设我有三个表,a = 人员表,b = 地址表和c = 车表。
表b 将始终连接到表a,因为一个人总是住在一个地址,但表c 应该只连接到a 如果'car_id' 字段中的值更多大于 0,因为有车是可选的。
查询:
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 语句,但我总是遇到语法错误。有人可以在这里指出我正确的方向吗?提前致谢
【问题讨论】:
-
我会的,谢谢!
标签: mysql join conditional-statements