mysql连接带if条件的表?

时间:2013-07-31 04:40:23

标签: mysql if-statement

我试图加入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,则返回所有正确的行,但表中的所有列都是,州,会员和经销商将为NULL。它不应该是因为我需要那些表中的信息。

如果 member.dealer-id为>,我只能加入dealer表格吗? 0 ?我可以在经销商表中添加一行ID为0,但必须有更好的方法。

1 个答案:

答案 0 :(得分:2)

以正常方式对联接进行编码后,仅在LEFT JOIN表上使用dealer

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大于零,这将自动加入经销商。

顺便说一下,我以前从未见过像你这样的查询连接编码。如果我有,我会认为它不会因语法错误而执行 - 看起来很奇怪。