首页 > 解决方案 > 我的 SQL 查询会检索到所需的信息吗?

问题描述

我正在练习编写 SQL 查询,我只是想检查我的答案是否会给我想要的结果。

我得到了几个数据库表,我需要检索“从堪培拉的供应商那里订购任何产品的客户的客户 ID”

表格:

我编写的 SQL 查询:

SELECT Customer.CustomerID
FROM Customers, Orders
WHERE (Customers.CustomerID = Orders.CustomerID)
  AND (Orders.ProductID IN (SELECT Products.ProductID
                            FROM Suppliers, Products
                            WHERE (Products.SupplierID = Suppliers.SupplierID)
  AND (Suppliers.City = 'Canberra'))

该查询应检索与曾经订购过堪培拉供应商生产的产品的客户相匹配的客户编号列表。

标签: sql

解决方案


使用表的正确连接和别名来执行此操作:

SELECT DISTINCT c.CustomerID
FROM Customers AS c 
INNER JOIN Orders AS o ON c.CustomerID = o.CustomerID
INNER JOIN Products AS p ON o.ProductID = p.ProductID 
INNER JOIN Suppliers AS s ON p.SupplierID = s.SupplierID
WHERE s.City = 'Canberra'

推荐阅读