PHP/MySQL重复select的值


PHP/MySQL Duplicate values from 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,但由于客户可以多次选择同一侧,他们会得到一个不准确的结果(测试)。有人能解释一下原因吗?将使用连接帮助。我的老师喜欢哪里(不知道为什么),但这就是为什么我用它
编辑:如果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";