我正在尝试使用LEFT JOIN获取用户的应用数量。无论用户是否有应用程序,它都需要返回用户,但是当没有用户时,查询返回一个包含0个应用程序的空记录。
SELECT u.*, COUNT(a.id) AS apps_working
FROM users u
LEFT JOIN apps a ON (u.id = a.user_id)
WHERE u.company_id = :company_id
AND u.account_type = 3
编辑:当没有用户在场时,结果如下所示:
Array
(
[0] => Array
(
[id] =>
[company_id] =>
[user_login] =>
[user_password] =>
[first_name] =>
[last_name] =>
[user_hash] =>
[user_slug] =>
[date_joined] =>
[last_login] =>
[account_type] =>
[status] =>
[apps_working] => 0
)
)
答案 0 :(得分:0)
试试这段代码:
SELECT u.*, COUNT(IFNULL(a.id,0)) AS apps_working
FROM users u
LEFT JOIN apps a ON (u.id = a.user_id)
WHERE u.company_id = :company_id
AND u.account_type = 3
答案 1 :(得分:0)
这是左连接查询。因此,如果没有用户满足company_id和account_type的条件,则没有加入的东西,结果没有。
答案 2 :(得分:0)
这是一个始终返回值的查询,因为count(*)将始终返回一些内容。如果您不想看到它,请将case语句添加到trap 0并返回null。