繁体   English   中英

mysql连接带if条件的表?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM