我在下面的查询中返回每个表以保存查询的信息。
这些查询中的每一个都不是很有效。前两个返回我要查找的所有结果,但是每个条目(行)的倍数:
"SELECT`products`.*, `orderdetails`.*, `orders`.*
FROM `orders`
INNER JOIN `orderdetails` ON `orderdetails`.`orderNumber` = `orders`.`orderNumber`
INNER JOIN `products` ON `orderdetails`.`productCode` = `products`.`productCode`
WHERE orders.status = 'Cancelled'";
"SELECT `products`.*, `orderdetails`.*, `orders`.*
FROM `orders`
LEFT JOIN `orderdetails` ON `orderdetails`.`orderNumber` = `orders`.`orderNumber`
LEFT JOIN `products` ON `orderdetails`.`productCode` = `products`.`productCode`
WHERE orders.status = 'In Process'";
最后一个,我只是不确定它有什么问题。根本没有信息显示。代码坏了。我确实希望基本上和上面的查询做同样的事情,但只显示前20行。
"SELECT `products`.*, `orderdetails`.*, `orders`.*
FROM `orders`
LEFT JOIN `orderdetails` ON `orderdetails`.`orderNumber` = `orders`.`orderNumber`
LEFT JOIN `products` ON `orderdetails`.`productCode` = `products`.`productCode`
GROUP BY orderNumber ORDER BY max(orderDate) DESC LIMIT 20";
谁能看到我哪里出错了?为什么我的前两个表显示每个条目的倍数?我上次查询中有什么错误?
以下是错误输出的屏幕截图:
这是表格的ER图。我期待显示:ProductCode,ProductLine,ProductName,Comments,OrderNumber,OrderDate,Status。
至于我的理解,我必须加入表:OrderDetails,Products和Orders。
答案 0 :(得分:0)
我想补充一点,第三个查询将不起作用,因为您使用Group by而没有任何聚合函数。很可能你需要这个
SELECT `products`.*, `orderdetails`.*, `orders`.*, max(orderDate)
FROM `orders`
LEFT JOIN `orderdetails` ON `orderdetails`.`orderNumber` = `orders`.`orderNumber`
LEFT JOIN `products` ON `orderdetails`.`productCode` = `products`.`productCode`
GROUP BY orderNumber ORDER BY max(orderDate) DESC LIMIT 20";