sql - SQL 从具有特定查询的 2 个表中选择
问题描述
我正在学习 SQL,我想为某个 ID 号选择某个名称和电话号码列表。这些名称是使用 FurnitureID 购买家具的客户的名称。此列表还应按客户姓名的字母顺序显示。我不确定 Join 是如何工作的,以及如何按客户姓名的字母顺序列出它。
因此,客户在商店下订单,然后公司从供应商那里订购所需的家具。当订购的家具到达商店时,工作人员会通过电话或电子邮件通知客户,通知他们可以取货。客户经常在同一个订单中订购不止一种类型的家具,例如一张沙发和两把椅子。
这些表存储在关系数据库中:
- 家具(FurnitureID、FurnitureName、Category、Price、SupplierName)
- 客户订单(订单 ID,客户 ID,日期)
- CustomerOrderLine( OrderID , FurnitureID , Quantity)
- 客户(CustomerID、CustomerName、EmailAddress、TelephoneNumber)
到目前为止我所做的是:
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。
推荐阅读
- python - Python查找重复:找出是否有重复的数字并且索引diff最多为k
- azure - BlobAttribute 与 BlobTriggerAttribute 有什么区别?
- ruby-on-rails - 在 try 和 & 之间推荐哪种语法。当我们在 Ruby on Rails 中处理 nil 值时?
- javascript - 如何使用 javascript 对多个 url 进行长轮询?
- javascript - Reddit API (Node Js):如何使用 snoowrap 和 snoostorm 在 reddit 中检索父评论?
- swift - Swift Combine:检查主题是否有观察者?
- angular - Angular4中带有动态参数的自定义验证器
- sql - 三重关系 QueryBuilder symfony(我到底在做什么?)
- python - vagrant (bento/ubuntu-16.04) 中的端口转发和 localhost 也没有打开
- java - 如何初始化“hasil”以便我可以在开关功能中使用它?