我目前正在执行一个查询,然后在 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/