2010-05-22 126 views
0

我有兩個表,Customer和CustomerPhone。客戶通常有多個電話號碼,因此當我在客戶101上運行select聲明時,由於多個電話號碼,我將獲得多條記錄。如何一次從多個表中選擇多個記錄

所有「電話」和「傳真」字段都屬於CustomerPhone表。這些在CustomerPhone表中被視爲兩條記錄,而其餘的字段與Customer表(這是一條記錄)相關。

在這種情況下,我應該如何填寫電話和傳真字段?我應該先在CustomerPhone上運行select聲明,然後在客戶上運行select聲明?

+0

SQL Server/C#/ .NET/T-SQL不需要在標題中,因爲它們位於標記中。 – 2010-05-22 23:31:28

+0

你是對的 - 我爲誤導性的標題道歉 – peace 2010-05-23 02:38:17

回答

2

我猜你CustomerPhone表看起來像

CustomerPhone 
CustomerID int 
Number varchar 
PhoneType phone | fax 

看來UI允許只是一個普通電話和傳真號碼。如果是這樣的話,和客戶只擁有最多一個電話,一個傳真(但可能沒有),即在客戶ID/PHONETYPE在CustomerPhone唯一索引,然後你可以檢索的所有信息爲一體的查詢:

SELECT c.*, phone.Number, fax.Number FROM Customer c 
LEFT JOIN CustomerPhone phone ON phone.CustomerID=c.CustomerID 
LEFT JOIN CustomerPhone fax = fax.CustomerID=c.CustomerID