2010-05-22 91 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