2011-07-04 7 views
1

私はuserprofileとvideoinfoという2つのテーブルを持っています。 videoInfoにはuserprofileへのFKがあります。MySQLでCOUNTを実行

CREATE TABLE `userprofile_userprofile` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `full_name` varchar(100) NOT NULL, 
    ... 
) 

CREATE TABLE `userprofile_videoinfo` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `title` varchar(256) NOT NULL, 
    `uploaded_by_id` int(11) NOT NULL, 
    ... 
    KEY `userprofile_videoinfo_e43a31e7` (`uploaded_by_id`), 
    CONSTRAINT `uploaded_by_id_refs_id_492ba9396be0968c` FOREIGN KEY (`uploaded_by_id`) REFERENCES `userprofile_userprofile` (`id`) 
) 

各ユーザープロファイルに含まれる動画の数とCOUNT件数を表示するために使用するSQL文は何ですか?

答えて

4
SELECT u.id as userId, count(v.uploaded_by_id) as videosCount 
FROM userprofile_userprofile u 
    LEFT OUTER JOIN userprofile_videoinfo v 
     ON v.uploaded_by_id = u.id 
GROUP BY u.id 
ORDER BY count(v.uploaded_by_id) DESC 
+0

1:OUTERはOPは、すべてのユーザーのためにカウントを参照する必要がある場合、最高で登録しよう。内側のJOINでは、カウントがゼロのユーザーは表示されません。 –

+0

@ Scorpi0:これは、ビデオアップロードなしですべてのユーザープロファイルに1のカウントを与えます。それはなぜそれを行うのですか?これをどうすれば解決できますか? – David542

+2

@ David542:更新されました。あなたはv.uploaded_by_idではなく*を数える必要があります。 –

0
SELECT uploaded_by_id, COUNT(ID) as cnt 
FROM userprofile_videoinfo 
GROUP BY uploaded_by_id 
ORDER BY cnt DESC; 
関連する問題