所以,我有一些名为文件和文件夹的表格,其中包含ID和常用关系:file.folder_id = folder.id
此外,字段忽略可以忽略某些文件/文件夹。
我正在尝试获取相应文件夹中的文件夹列表和文件计数。 我的第一种方法工作正常,但错过了空文件夹:
SELECT folders.id, folders.name, count(files.id) kount
FROM folders, files
WHERE folders.site_id=111
AND files.ignored=0
AND folders.ignored=0
AND files.site_id=111
AND files.folder_id=folders.id
GROUP BY folders.name
ORDER BY folders.name
所以我寻找LEFT JOIN
SELECT folders.id, folders.name, count(files.id) kount
FROM folders
LEFT JOIN files
ON files.folder_id=folders.id
WHERE folders.site_id=111
AND folders.ignored=0
AND files.ignored=0
AND files.site_id=111
GROUP BY folders.name
ORDER BY folders.name
但是再次 - 缺少空文件夹。我做错了什么?
答案 0 :(得分:1)
您需要将连接表的条件直接放入left join
SELECT folders.id, folders.name, count(files.id) kount
FROM folders
LEFT JOIN files ON files.folder_id=folders.id
AND files.ignored=0
AND files.site_id=111
WHERE folders.site_id=111
AND folders.ignored=0
GROUP BY folders.name
ORDER BY folders.name
答案 1 :(得分:0)
试试这个。
SELECT folders.id, folders.name, count(files.id) kount
FROM folders
LEFT JOIN files
ON files.folder_id=folders.id
AND files.ignored=0
AND files.site_id=111
WHERE folders.site_id=111
AND folders.ignored=0
GROUP BY folders.name
ORDER BY folders.name