查询在列上返回错误信息

毒品:

如果运行此命令:

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。

这是为什么?我认为这是一个相当简单的查询,我没想到会遇到任何问题。但是在这里,表中显示给我的数据与查询返回的数据明显不同。我是否缺少某些内容,或者他们的站点/数据库刚刚损坏?

TeaBaerd:

该错误是由您加入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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章