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

标签 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。

最佳答案

正如您所说,如果每个客户只有一个电话号码,您的查询就会起作用。

拥有多个电话号码的客户也将被返回,但对于每个不同的电话号码,客户记录都会重复。

您需要考虑的另一个条件是没有电话号码的客户。如果您对表进行 INNER JOIN,则这些客户将从结果集中排除。要包含此类客户,您需要使用 OUTER JOIN。

关于c# - SQL 从两个表中选择数据(一行 -> 多行),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4399496/

相关文章:

c# - 将接受任何文本的 DataGridView ComboBox 列

c# - 将浏览器缩放设置为 80% 的 ChromeOptions

c# - 当在 C# 程序的调用堆栈中找不到处理程序时,正确的方法是什么

c# - 在构造函数中作为通用类型的操作会产生编译错误

c# - 我的 WPF 自定义控件 Datacontext 正在取代父控件

c# - 依赖属性绑定(bind)未更新

c# - Linq 的 Enumerable.Count 方法检查 ICollection<> 但不检查 IReadOnlyCollection<>

SQL:如何从日期时间字段中提取月份

c# - 更新记录

sql - 合并查询返回 ORA-30926 : unable to get a stable set of rows in the source tables