假设我有两个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。
答案 0 :(得分:3)
正如您所说,如果每个客户只有一个PhoneNumber,那么您的查询将会起作用。
还将退回具有多个电话号码的客户,但每个不同的电话号码将重复客户记录。
您需要考虑的另一个条件是没有电话号码的客户。如果INNER JOIN表,那么这些客户将被排除在结果集之外。要包含此类客户,您需要使用OUTER JOIN。
答案 1 :(得分:2)
您提供的查询将返回多个电话号码(如果存在)。您会看到重复customer.fName
和customer.lName
的行,每行都有不同的phone.phoneNumber
。
答案 2 :(得分:0)
你可以做同样的事情。您当前列出的查询应该检索您想要的确切结果;每个客户每个电话号码一行。
答案 3 :(得分:0)
如果一个客户有多个数字,您将获得多行。