mysql count(*)left join group by - 文件夹中的文件数

时间:2010-03-27 14:43:42

标签: sql mysql

我有以下表格

CREATE TABLE `files` (
  `fileid` int(11) NOT NULL AUTO_INCREMENT,
  `filename` varchar(255) NOT NULL,
  `filesize` int(11) NOT NULL,
  `folder` int(11) NOT NULL,
  PRIMARY KEY (`fileid`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8;

CREATE TABLE `folders` (
  `directoryid` int(11) NOT NULL AUTO_INCREMENT,
  `directoryname` varchar(255) NOT NULL,
  PRIMARY KEY (`directoryid`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8;

如何获取所有文件夹的列表及其保存的文件数,包括没有(零)文件的文件夹?不得考虑递归。

找到它

select folders.directoryid, folders.directoryname, count(files.fileid) as no_files
from  folders
left join files on files.folder = folders.directoryid
group by folders.directoryid, folders.directoryname

我希望它会帮助别人。

3 个答案:

答案 0 :(得分:1)

select folders.directoryname, 
       count(files.fileid) 
from folders left outer join 
     files on folders.directoryid = files.folder 
group by folders.directoryid

应该这样做

答案 1 :(得分:0)

您可以尝试类似

的内容
SELECT f.directoryid,
   COUNT(fs.fileid) CountOfFiles
FROM folders f LEFT JOIN
    files fs ON f.DirectoryID = fs.folder
GROUP BY f.directoryid

答案 2 :(得分:0)

SELECT directoryname, COUNT(files.fileid) AS filecount
FROM folders
LEFT JOIN files ON files.folder = folders.directoryid
GROUP BY directoryid
ORDER BY directoryname