如果运行此命令:
SELECT o.orderid,suppliername,p.productname
FROM Suppliers s
JOIN Orders o
ON o.shipperid = s.supplierid
JOIN OrderDetails od
ON od.orderid = o.orderid
JOIN Products p
ON p.productid = od.productid
在https://www.w3schools.com/sql/trymysql.asp?filename=trysql_func_mysql_count
您会获得结果,其中每个订单ID都有一组包含产品名称和供应商名称的行。现在,有趣的是,对于整个订单(例如,订单10300为两行的集合),总会有相同的供应商名称。
但这不是真的。在查找“产品”表时,您会发现,例如,对于ID为66和68的产品(订单10300中包含的产品),注册了两个不同的供应商ID。2和8。这些解析为Suppliers表上的两个不同的Suppliername。
这是为什么?我认为这是一个相当简单的查询,我没想到会遇到任何问题。但是在这里,表中显示给我的数据与查询返回的数据明显不同。我是否缺少某些内容,或者他们的站点/数据库刚刚损坏?
该错误是由您加入Suppliers表的方式引起的。似乎您不是想将“供应商”表加入到“订单”表中,而是想将“产品”加入到“供应商”表中,以获得这些产品的供应商。这样的查询看起来像:
SELECT o.orderid, s.suppliername, p.productname
FROM Orders o
JOIN OrderDetails od ON od.orderid = o.orderid
JOIN Products p ON p.productid = od.productid
JOIN Suppliers s ON s.supplierid = p.supplierid
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句