SQL从具有特定查询的2个表中选择

SQL从具有特定查询的2个表中选择,sql,relational-database,Sql,Relational Database,我正在学习SQL,我想为某个ID号码选择一个特定的姓名和电话号码列表。这些名字是购买家具的顾客的名字。此列表还应按客户姓名的字母顺序列出。我不知道Join是如何工作的,也不知道如何按客户姓名的字母顺序列出它 因此,客户在商店下订单,然后公司向其供应商订购所需的家具。当订购的家具到达商店时,一名工作人员会打电话或发电子邮件给客户,通知他们家具已准备好可以领取。客户通常在同一订单上订购多种家具,例如一张沙发和两把椅子 这些表存储在关系数据库中: 家具(家具ID、家具名称、类别、价格、供应商名称)

我正在学习SQL,我想为某个ID号码选择一个特定的姓名和电话号码列表。这些名字是购买家具的顾客的名字。此列表还应按客户姓名的字母顺序列出。我不知道Join是如何工作的,也不知道如何按客户姓名的字母顺序列出它

因此,客户在商店下订单,然后公司向其供应商订购所需的家具。当订购的家具到达商店时,一名工作人员会打电话或发电子邮件给客户,通知他们家具已准备好可以领取。客户通常在同一订单上订购多种家具,例如一张沙发和两把椅子

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

  • 家具(家具ID、家具名称、类别、价格、供应商名称)
  • CustomerOrder(OrderID、CustomerID、日期)
  • CustomerOrderLine(订单ID、家具ID、数量)
  • 客户(客户ID、客户名称、电子邮件地址、电话号码)
到目前为止,我所做的是:

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

谢谢大家!

您可以使用
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

试试这个:

Select c.* From Customer c inner join CustomerOrder co on c.CustomerID co.CustomerID
inner join CustomerOrderLine col on col.OrderID = co.OrderID
inner join Furniture f on f.FurnitureID = col.FurnitureID
where f.FurnitureID = 10765
order by CustomerName