0

如何仅使用一个数据库查询来实现以下目标?

$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>"
}
4

1 回答 1

1

INNER JOIN为此在email现场使用:

SELECT c.name, o.sku, o.cost FROM customers c INNER JOIN orders o ON o.email = c.email

不要忘记在email字段上添加 MySQL INDEX 以提高性能。

但这只会选择有订单的客户。如果您需要选择所有客户(即使没有订单),请LEFT JOIN改用。在这种情况下skucost没有订单的用户的字段将是null.

使用此图片作为提示。在此处输入图像描述

于 2013-09-06T15:29:34.337 回答