我正在运行这个查询
$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,但由于客户可以多次选择同一侧,他们会得到一个不准确的结果(测试)。有人能解释一下原因吗?将使用连接帮助。我的老师喜欢哪里(不知道为什么),但这就是为什么我用它
编辑:如果Recipe和Orders有多对多关系,ORDERRECI是引用表。我正在计算一个订单的总成本。我刚刚尝试了内连接但它仍然重复了这次它重复了14次
FROM ORDERRECI, ORDERS, RECIPE
这里,您正在对3个表进行笛卡尔积,这意味着,每个表的每一行将与FROM
列表中其他表的每一行配对。我不知道你查询的目的是什么,但这就是发生的事情。
尝试将此添加到您的查询
GROUP BY RECIPE.Name
对于ORDERRECI
中的每一行,您创建一个与ORDERS
中的每一行合并的行,RECIPE
也是如此。
应该使用LEFT JOIN。在这里阅读有关SQL连接类型的信息
我以这样的语句结束。我需要这些表的一般连接。那就用哪里来缩小范围。谢谢你帮我解决这个问题$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";