2010-12-09 59 views
2

假設我有兩個SQL表:Customers和PhoneNumbers。SQL從兩個表中選擇數據(一行 - >多行)

假設客戶具有以下列:customerId(主鍵),fName,lName。

假設PhoneNumbers具有以下列:phoneNumberId(主鍵),phoneNumber,customerId(外鍵)。

我到目前爲止明白那是什麼,如果每個客戶都有一個電話號碼,我可以用下面的SQL選擇FNAME,LNAME,和每一個客戶的電話號碼:

SELECT 
    customer.fName, customer.lName, phone.phoneNumber 
FROM 
    Customers customer 
     INNER JOIN phoneNumbers phone ON 
      customer.customerId = phone.customerId 

如果一個客戶可能有多個電話號碼?如何獲得每個客戶電話號碼列表的客戶列表?

我用來驅動SQL的編程語言是C#/ .NET。

+0

@casperOne,感謝格式化我的代碼:-) – 2010-12-09 14:54:01

回答

3

正如您所說,如果每個客戶只有一個PhoneNumber,那麼您的查詢將會起作用。

具有多個電話號碼的客戶也將被退回,但客戶記錄將被複制到每個不同的電話號碼。

您需要考慮的另一個條件是沒有電話號碼的客戶。如果您INNER JOIN表格,則這些客戶將被排除在結果集之外。要包含這些客戶,您需要使用OUTER JOIN。

0

你可以做同樣的事情。您當前列出的查詢應檢索您想要的確切結果;每個客戶每個電話號碼一行。

0

如果某個客戶有多個號碼,您將獲得多行。

2

您提供的查詢將返回多個電話號碼(如果存在)。您將看到重複的行customer.fNamecustomer.lName,每行都有不同的phone.phoneNumber