私は 'フォルダ'のテーブルを持っています。私はuserIdが16のすべてのレコードを返したいと思います。ジョインとカウントを組み合わせたMySQLステートメント?
SELECT * FROM `folders` WHERE userId = 16;
私は 'ファイル'のテーブルを持っています。上に返された各「フォルダ」について、その「フォルダ」内の「ファイル」の数を返したいとします。
SELECT COUNT(*) as "Files" FROM files WHERE Folder = n;
これをどのように組み合わせますか?道に迷いました。ありがとう!その後、最初に をそれに参加、
SELECT
folders.*,
COUNT(files.*) as filetotal
FROM folders
LEFT JOIN files ON folders.ID=files.folderID
WHERE userId = 16
GROUP BY folders.ID
これは間違っています。フォルダ。*で参照される列は、GROUP BY句になければなりません。 GROUP BYを使用するSELECT文のすべての列は、GROUP BYまたは集約関数のいずれかになければなりません。 – alyssackwan
ええ、そういうわけで、私はfolders.ID(グループ化するには1列で十分です)でgrouppingしています。 – dusoft
これを動作させるには、SELECT句に記載されている「フォルダー」から必要な列をすべてGROUP BYする必要があります。「1列でグループ化するだけで十分です」という理論をテストしました。少なくとも2005年。 –