2017-10-16 90 views
0

这是我的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);

+1

您是否尝试使用'LEFT'或'RIGHT'连接取决于您想要的? –

+0

左边加入你的第一个句子 –

回答

1

试试这个:与

更换你的最后INNER JOINLEFT 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

0

您需要改为外部连接。 例如

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的对应,否则你会需要一个外部联接有作为)

0

则需要使用重写查询外部连接

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;