PHP / MySQL从select中复制值

时间:2014-05-11 19:52:48

标签: php mysql select

我正在运行此查询

$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次

4 个答案:

答案 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";