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

时间:2019-11-24 22:23:55

标签: sql relational-database

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

因此,客户在商店下订单,然后公司从其供应商处订购了所需的家具。当订购的家具到达商店时,工作人员会打电话或发电子邮件给客户,告知他们准备收货。客户经常以同一顺序订购不止一种家具,例如沙发和两把椅子。

表存储在关系数据库中

  • 家具(家具ID ,家具名称,类别,价格,供应商名称)
  • CustomerOrder( OrderID ,CustomerID,Date)
  • CustomerOrderLine( OrderID FurnitureID ,数量)
  • 客户(客户ID ,客户​​名称,电子邮件地址,电话号码)

到目前为止,我所做的是:

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

谢谢!

2 个答案:

答案 0 :(得分:0)

您可以将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。

答案 1 :(得分:0)

尝试一下:

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