php - 将多个结果的子查询合并为一个

标签 php mysql mysqli

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

$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。在这种情况下,没有订单的用户的 skucost 字段将为 null

使用这张图片作为提示。 enter image description here

关于php - 将多个结果的子查询合并为一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18661147/

相关文章:

php - 如何使用 PHP cURL 从 API 获取链接标题(用于分页)

php - opendir 和 readdir 返回 utf8

php - 我如何使用随机数预填写表单,并允许用户输入他们的信息?我使用 html、php 和我的 sql

php - 如何在 PDO(或 MySQLi)查询中正确处理关联数组?

php MySQL在嵌套div中循环

php - MySQL查询没有正确显示所有记录

php - X-XSS-保护误报?

mysql - 计算包含 Join 的查询中的行数

MySql - 使用外键约束创建表 `SortOrder`?

php - MySQL/PHP/JS 动态填充下拉菜单