2017-10-16 47 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;