php - 当你需要查询的结果作为参数时,你如何在 SQL 中进行 JOIN?

标签 php mysql join

我目前正在执行一个查询,然后在 while 循环中运行另一个查询,我知道这是不好的做法。我知道我需要进行某种连接,但我需要将内部查询的结果作为外部查询的一部分,但我不确定该怎么做。

$departments = $db->prepare("SELECT * FROM departments");
$departments->execute();

while ($row = $departments->fetch(PDO::FETCH_ASSOC))
{
    $department_id = $row['department_id'];

    $total_problems = $db->prepare("SELECT  COUNT(*) FROM `problems` WHERE department =$department_id"); 
    $total_problems->execute();
    $department_problems = $total_problems->fetchColumn(0);
}

我尝试过各种连接,但无法正确理解它。

最佳答案

您正在寻找一个group by 查询和一个left outer join:

SELECT d.department_id, count(p.department_id)
FROM departments d left outer join
     problems p
     on d.department_id = p.department_id
GROUP BY d.department_id;

left outer join 很重要,因此您可以获取所有部门,无论他们是否有问题。

关于php - 当你需要查询的结果作为参数时,你如何在 SQL 中进行 JOIN?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24946457/

相关文章:

python - 使用 image_slicer.py 将切片加入完整图像

php - 子查询 : Laravel 4. 2

mysql - 如何将变量插入Sqlite3数据库

php - 更新 PHP5.4 和 MySQL4.1+ 时 Wordpress 连接错误

mysql - 当产品未链接到类别时,SQL 按类别顺序订购产品不起作用

mysql - 如何为多个连接编写子查询sql

javascript - 无法在 PHP 上编译共享扩展

php - 获取两个字符之间的所有内容

php - 使用 PHP PDO 从 PostgreSQL 表导出 .csv 文件(带标题),缺少第一个数据行

php - 如何从不同日期的数据中获取当月的数据?