如何关联Oracle多表查询指定EmployeeID对应的运货商及商品信息
解决方案
你需要将四张表通过关联字段依次内连,补充EmployeeID筛选条件即可得到目标结果,参考语句如下:
SELECT Shippers.ShipperName, OrderDetails.ProductID, Products.ProductName FROM Orders INNER JOIN Shippers ON Orders.ShipperID = Shippers.ShipperID INNER JOIN OrderDetails ON Orders.OrderID = OrderDetails.OrderID INNER JOIN Products ON OrderDetails.ProductID = Products.ProductID WHERE Orders.EmployeeID = 你要查询的指定员工ID -- 例如查询EmployeeID为5就写5
如果需要去重,可在SELECT后添加DISTINCT关键字。
错误原因说明
- 第一次查询缺少与Products表的关联,也未加EmployeeID筛选条件,无法拿到ProductName字段,也不能过滤指定员工的数据
- 第二次查询未关联Shippers和Products表,无法获取ShipperName和ProductName字段
- UNION用于纵向合并多个查询的结果集,要求所有查询返回的列数、数据类型一致,你的需求是横向拼接不同表的字段,应使用JOIN关联而非UNION
内容的提问来源于stack exchange,提问作者JAUGRY
相关产品推荐
相关产品推荐

