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