SQL从两个表中选择数据(一行 - >多行)

时间:2010-12-09 14:50:19

标签: c# .net sql

假设我有两个SQL表:Customers和PhoneNumbers。

假设Customers包含以下列:customerId(主键),fName,lName。

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

到目前为止我所理解的是,如果每个客户都有一个电话号码,我可以使用以下SQL选择每个客户的fName,lName和phoneNumber:

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

如果客户可能有多个电话号码怎么办?如何获得每个客户的电话号码列表的客户列表?

我用来驱动SQL的编程语言是C#/。NET。

4 个答案:

答案 0 :(得分:3)

正如您所说,如果每个客户只有一个PhoneNumber,那么您的查询将会起作用。

还将退回具有多个电话号码的客户,但每个不同的电话号码将重复客户记录。

您需要考虑的另一个条件是没有电话号码的客户。如果INNER JOIN表,那么这些客户将被排除在结果集之外。要包含此类客户,您需要使用OUTER JOIN。

答案 1 :(得分:2)

您提供的查询将返回多个电话号码(如果存在)。您会看到重复customer.fNamecustomer.lName的行,每行都有不同的phone.phoneNumber

答案 2 :(得分:0)

你可以做同样的事情。您当前列出的查询应该检索您想要的确切结果;每个客户每个电话号码一行。

答案 3 :(得分:0)

如果一个客户有多个数字,您将获得多行。