我正在运行此查询
$sql6 = "SELECT RECIPE.Price, RECIPE.Name FROM ORDERRECI, ORDERS, RECIPE WHERE ORDERRECI.OrderID = $orderID AND ORDERRECI.RecipeID = RECIPE.RecipeID";
$results = mysqli_query($con, $sql6);
while ($row=mysqli_fetch_assoc($results))
{
$calcC+= $row['Price'];
echo $calcC.$row['Name']."<br />";
}
return $calcC;
查询运行良好我得到正确的值但是我得到它们9次。(我通过回声检查)。我查了一下他们只在那里的数据库。我尝试使用Distinct,但因为客户可以多次选择同一方,他们会得到不准确的结果(经过测试。任何人都可以解释原因。可以使用加入帮助。我的老师喜欢在哪里(不知道为什么)但是&# 39;为什么我用它
编辑:
我的食谱和订单有多对多的关系ORDERRECI是参考表。我正在尝试计算订单的总成本。我只是尝试了内连接,但它仍然重复,这次重复了14次
答案 0 :(得分:1)
FROM ORDERRECI, ORDERS, RECIPE
这里你正在用3个表做笛卡尔积,这意味着每个表的每一行都将与FROM
列表中每个其他表的每一行配对。我不知道你的查询目标是什么,但这是发生了什么。
答案 1 :(得分:0)
尝试将此添加到您的查询
GROUP BY RECIPE.Name
答案 2 :(得分:0)
对于ORDERRECI
中的每一行,您为ORDERS
中的每一行创建一个合并行,RECIPE
也是如此。
你应该使用LEFT JOIN。阅读 SQL join types here
答案 3 :(得分:0)
我最后发表了这个声明。我需要表格的一般连接。然后用哪里缩小范围。感谢您帮忙搞清楚
$sql = "SELECT RECIPE.Price FROM ORDERRECI INNER JOIN ORDERS ON ORDERRECI.OrderID = ORDERS.OrderID INNER JOIN RECIPE ON ORDERRECI.RecipeID = RECIPE.RecipeID WHERE ORDERS.OrderID = $orderID";