首页 > 解决方案 > SQL 从具有特定查询的 2 个表中选择

问题描述

我正在学习 SQL,我想为某个 ID 号选择某个名称和电话号码列表。这些名称是使用 FurnitureID 购买家具的客户的名称。此列表还应按客户姓名的字母顺序显示。我不确定 Join 是如何工作的,以及如何按客户姓名的字母顺序列出它。

因此,客户在商店下订单,然后公司从供应商那里订购所需的家具。当订购的家具到达商店时,工作人员会通过电话或电子邮件通知客户,通知他们可以取货。客户经常在同一个订单中订购不止一种类型的家具,例如一张沙发和两把椅子。

这些表存储在关系数据库中:

到目前为止我所做的是:

SELECT Furniture.FurnitureID, Customer.CustomerName, Customer.TelephoneNumber) 
FROM Furniture, Customer 
WHERE FurnitureID = 10765

谢谢!

标签: sqlrelational-database

解决方案


您可以使用exists具有相关子目录的条件来过滤Customer订购相关家具的人的表格:

select c.CustomerName, c.TelephoneNumber
from customer c
where exists (
    select 1
    from CustomerOrder co
    inner join CustomerOrderLine col
        on  col.OrderID = co.OrderID
        and col.FurnitureID = ?
    where co.CustomerID = c.CustomerID
)
order by c.CustomerName

问号 ( ?) 代表您要搜索的家具的 ID。


推荐阅读