2013-03-17 69 views
0

我有以下SQL語句:空的外鍵

SELECT Useraccount.Name, Company.Name 
FROM Useraccount, Company 
WHERE Useraccount.CompanyId = Company.ID 

這一聲明顯示了所有useraccount-名字和他們的公司的名稱。

但我也有useraccounts其中companyId是0,我也想讓他們顯示(在這種情況下公司的名稱可以是一個空字符串)。 我該怎麼做?

+0

使用'LEFT'加入。 – 2013-03-17 18:34:43

+0

並且不要使用'0'。我不喜歡它們,但這就是'NULL'的意思。如果將0轉換爲空值,則可以添加明確的外鍵約束。 – 2013-03-17 18:37:25

回答

1

使用LEFT JOIN代替:

SELECT 
    Useraccount.Name, 
    Company.Name 
FROM Useraccount 
LEFT JOIN Company ON Useraccount.CompanyId = Company.ID; 

你是INNER JOIN與老JOIN語法荷蘭國際集團的兩個表。請避免使用舊的連接語法,並使用關鍵字JOIN使用ANSI SQL-92顯式語法。有關更多信息,請參見本:

欲瞭解更多信息有關不同連接類型:

+0

非常感謝。 – mosquito87 2013-03-17 18:49:49

+0

@ mosquito87 - 隨時歡迎您:) – 2013-03-17 18:51:56

1

一個LEFT JOIN會做的伎倆爲您提供:

SELECT Useraccount.Name, Company.Name 
FROM Useraccount 
LEFT JOIN Company ON Useraccount.CompanyId = Company.ID 
0

您可以使用 - 當您使用LEFT JOIN

SELECT Useraccount.Name, Company.Name 
FROM Useraccount, Company 
WHERE Useraccount.CompanyId = Company.ID or Useraccount.CompanyId =0 
0

,您將獲得由左表中的所有行,不論的行匹配狀態。

SELECT 
Useraccount.Name AS UserAccountName, 
Company.Name AS CompanyName 
FROM Useraccount 
LEFT JOIN Company 
ON Useraccount.CompanyId = Company.ID; 
+0

嗨,你介意解釋這項工作的方式和原因嗎? – 2013-03-17 19:03:47