sql - 我的 SQL 查询会检索到所需的信息吗?
问题描述
我正在练习编写 SQL 查询,我只是想检查我的答案是否会给我想要的结果。
我得到了几个数据库表,我需要检索“从堪培拉的供应商那里订购任何产品的客户的客户 ID”
表格:
- 供应商(SupplierID、CompanyName、ContactName、ContactTitle、地址、城市、地区、邮政编码、国家、电话、传真、主页)
- 产品(ProductID、ProductName、SupplierID、CategoryID、QuantityPerUnit、UnitPrice、UnitsInStock、UnitsOnOrder、ReorderLevel、停产)
- OrderDetails(OrderID, ProductID, UnitPrice, Quantity, Discount)
- 订单(OrderID、CustomerID、EmployeeID、OrderDate、RequiredDate、ShippedDate、ShipVia、Freight、ShipName、ShipAddress、ShipCity、ShipRegion、ShipPostalCode、ShipCountry)
- 客户(CustomerID、CompanyName、ContactName、ContactTitle、地址、城市、地区、邮政编码、国家、电话、传真)
- 员工(EmployeeID、LastName、FirstName、Title、TitleOfCourtesy、BirthDate、HireDate、地址、城市、地区、邮政编码、国家、HomePhone、分机、照片、Notes、ReportsTo、PhotoPath)
- 托运人(托运人 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'))
该查询应检索与曾经订购过堪培拉供应商生产的产品的客户相匹配的客户编号列表。
解决方案
使用表的正确连接和别名来执行此操作:
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'
推荐阅读
- python - 如何从第二列按字母顺序对python文件中的所有记录进行排序
- java - 运算符 + 未定义参数类型 void,Java 中的 String
- java - 单元测试spring boot | 无法加载应用程序上下文
- cypress - BFF(前端后端)和 Stup 微服务的最佳策略是什么?
- go - 为什么我不能在同一个 Go 项目中启动两个服务器?
- python - 有没有办法拉取python libtorrent模块的完整下载路径?
- mongodb - mongoose mongodb 对字段的引用(不是 ID)
- python - Variance and covariance of a bivariate normal distribution
- kotlin - Create list of lists in kotlin?
- flutter - Flutter background task when app is being used