这是我的sql select statment
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
);
答案 0 :(得分:1)
试试这个:
将您的上一个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;
答案 1 :(得分:0)
您需要一个外部联接。 e.g。
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;
(我认为在那里' ll会成为联系人的对手,否则你也需要在那里进行外部联接)
答案 2 :(得分: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;