如何仅使用一个数据库查询来实现以下目标?
$query = "SELECT `email`, `name` FROM `customers`";
$result = mysqli_query($link,$customer_query);
while($row = mysqli_fetch_array($result)){
echo "<p>".$row['name']."</p>";
echo "<ul>";
$query2 = "SELECT `sku` FROM `orders` WHERE `email` = '".$row['email']."'";
$result2 = mysqli_query($link,$query2);
while($row2 = mysqli_fetch_array($result2)){
echo "<li>".$row2['sku']."</li>";
echo "<li>".$row2['cost']."</li>";
}
echo "</ul>"
}
最佳答案
在 email
字段上使用 INNER JOIN
来实现此目的:
SELECT c.name, o.sku, o.cost FROM customers c INNER JOIN orders o ON o.email = c.email
不要忘记在 email
字段上添加 MySQL INDEX 以提高性能。
但这仅选择有订单的客户。
如果您需要选择所有客户(即使没有订单),请使用LEFT JOIN
。在这种情况下,没有订单的用户的 sku
和 cost
字段将为 null
。
使用这张图片作为提示。
关于php - 将多个结果的子查询合并为一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18661147/