选择的每个值(即使是空)与内部联接SQL
问题描述:
这是我的SQL SELECT statment选择的每个值(即使是空)与内部联接SQL
SELECT k.name, c.name AS nameCustomer, o.*
FROM offertes o
INNER JOIN customers k
ON o.idCustomer= k.id
INNER JOIN contactperson c
ON o.idContact = c.id;
当o.idContact
不存在,那么就没有选择的值。我不想得到NULL
而不是什么。它还需要SELECT
整排!谁能帮我?
ps。我认为内连接出错了(ON o.idContact = c.id
);
答
试试这个:与
更换你的最后INNER JOIN
LEFT JOIN
。
使用LEFT JOIN
你告诉我的主表(offertes
)总是返回的结果,但如果在二次表(contactperson
)有没有行匹配,则返回NULL该表中的所有字段
SELECT k.name, c.name AS nameCustomer, o.*
FROM offertes o
INNER JOIN customers k
ON o.idCustomer= k.id
LEFT JOIN contactperson c
ON o.idContact = c.id;
+0
非常感谢。这是最好的解决方案。 – Martijn
答
您需要改为外部连接。 例如
SELECT k.name, c.name AS nameCustomer, o.*
FROM customers k LEFT OUTER JOIN
(offertes o INNER JOIN
contactperson c
ON o.idContact = c.id)
ON o.idCustomer= k.id;
(我假设有会在contactperson的offerte的对应,否则你会需要一个外部联接有作为)
答
则需要使用重写查询外部连接
SELECT k.name, c.name AS nameCustomer, o.*
FROM customers k
LEFT OUTER JOIN offertes o ON o.idCustomer = k.id
LEFT OUTER JOIN contactperson c ON o.idContact = c.id;
您是否尝试使用'LEFT'或'RIGHT'连接取决于您想要的? –
左边加入你的第一个句子 –