[英]mysql join tables with an if condition?
我试图加入5个看起来有点像这样的表
邮政表
ID | 产品| 用户 - 我们| make-id | 经销商ID 待定| ......其他30个栏目......
制作桌子
ID | 制作|
州表
前缀| 州| 城市| 压缩
会员表
ID | 名字| 电子邮件| 密码| zip | 经销商-ID
经销商表
ID | 经销商名称| 城市| 州| zip | 地址| 电话
MySql查询看起来像这样
SELECT *
FROM `post` AS p
JOIN (`make` AS m, `state` AS s, `members` AS mb, `dealer` AS d)
ON (p.Make = m.id AND p.state = s.id AND p.id = mb.id AND mb.dealer-id = d.id)
WHERE p.pending != '1'
问题是此查询仅返回member.dealer-id = dealer.id的行,如果我使用LEFT JOIN,则返回所有正确的行,但表中的所有列make,state,members和dealer将为NULL。 它不应该是因为我需要那些表中的信息。
如果member.dealer-id> 0 ,我是否只能加入dealer
表? 我可以在经销商表中添加一行ID为0,但必须有更好的方法。
以正常方式对连接进行编码后,仅在dealer
表上使用LEFT JOIN
:
SELECT *
FROM post AS p
JOIN make AS m ON p.Make = m.id
JOIN state AS s ON p.state = s.id
JOIN`members AS mb ON p.id = mb.id
LEFT JOIN dealer AS d ON mb.dealer_id = d.id
WHERE p.pending != '1'
如果member.dealer-id
大于零,这将自动仅加入经销商。
顺便说一句,我以前从未见过像你这样的查询连接编码。 如果我有,我会认为由于语法错误它不会执行 - 它看起来很奇怪。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.