0

動作するMySQLクエリを作成しました:

  SELECT 
    v.*, u.username 
  FROM 
    video AS v, users AS u
  WHERE
    v.type = 'public' 
  AND 
    v.user_ID = u.user_ID

ここで、3 番目のテーブルを追加し、このテーブルcount()の結果がテーブルの結果commentsvideo_ID等しくなるテーブルの結果を追加しますvideo

私はこれを試しましたが、成功しませんでした:

  SELECT 
    v.*, u.username, count(c.video_ID)
  FROM 
    video AS v, users AS u, comments AS c
  WHERE
    v.type = 'public' 
  AND 
    v.user_ID = u.user_ID
  AND
    v.video_ID = c.video_ID

その見返りに、特定の に関連するコメントの数を取得したいと考えていますvideo_ID

1 つのクエリで正しく動作させる方法がわかりません。

助けていただけませんか?

前もってありがとう、
イリア

4

1 に答える 1

7

クエリで のような集計関数を使用している場合は、句COUNTでグループ化を指定する必要があります。GROUP BY

これを試して

SELECT  
    v.*, 
    u.username, 
    count(c.video_ID) AS comment_count
FROM  
video AS v
     INNER JOIN users AS u ON     v.user_ID = u.user_ID 
     INNER JOIN comments AS c ON    v.video_ID = c.video_ID
WHERE 
 v.type = 'public'  
GROUP BY
    v.id, 
    u.username,
    v.v.add_time
ORDER BY
    v.add_time

MySQL ではGROUP BY句の一部の要素を省略できますが、それらを指定することをお勧めします。

2 つのテーブルを結合する場合は、フィルターINNER JOINではなく構文を使用することをお勧めします。WHERE

于 2012-09-01T18:01:23.320 に答える