如果没有关系,从联结表获取数据为null

时间:2018-02-06 22:34:32

标签: mysql

我有3个表inputspostsposts_values

enter image description here

我需要获取所有带有值的输入,如果值不存在则获取null

喜欢(输入,值)

姓名:David,工作:开发人员,城市:NULL

1 个答案:

答案 0 :(得分:2)

您需要LEFT JOIN inputs表,如下所示:

SELECT i.input_name, pv.value
FROM inputs as i
LEFT JOIN posts        AS p   ON i.form_id = p.id
LEFT JOIN post_values  AS pv  ON pv.b_id   = p.id 
                             AND pv.a_id   = i.id;

这会给你:

| input_name |     value |
|------------|-----------|
|       name |     David |
|        job | Developer |
|       city |    (null) |

请注意:,我假设第三个表a_id上的post_valuesid表中inputs列的外键,以便每个输入名称与值匹配。否则,您可能需要将此a_id作为代理键,并添加其他外键input_id

您需要阅读有关SQL连接及其之间的区别的信息,请查看以下示例: