0

同じ動画を複数回視聴したユーザーをすべて見つける必要がある場合は、次のクエリを使用します。

SELECT userid AS users,video_id 
FROM watching_list GROUP BY userid , video_id HAVING COUNT(*) > 1;

^^それはあなたにそれを与えますよね?ウォッチング リストに、ユーザーが視聴したユーザー ID とビデオ ID、および日時スタンプが含まれている場合。

私がしたいのは、ユーザーIDに基づいてユーザーテーブルに結合し、ユーザーIDだけでなくユーザー名なども検索することです。

私は単純な結合を試みましたが、もちろんそれは私を壊しました。

4

2 に答える 2

4
SELECT Users.Name, Users.userid AS users,video_id 
FROM watching_list 
    JOIN Users
        ON Users.UserID = watching_list.UserID
GROUP BY Users.userid , video_id, Users.Name
HAVING COUNT(*) > 1;

なぜこれが壊れるのですか?同じユーザーである必要があるため、同じ人物の追加情報を に追加してgroup byも変更は発生しません。

これを証明するための粗雑で簡単な SQLFiddle を次に示します。

于 2012-04-26T03:38:56.293 に答える
3

それを行うためのやや洗練されていない方法は次のとおりです。

Select USERS.LAST_NAME,
       USERS.FIRST_NAME,
       double_watchers.VIDEO_ID
  FROM USERS,
      (SELECT userid AS users,
              video_id 
         FROM watching_list
        GROUP BY userid , video_id
       HAVING COUNT(*) > 1) double_watchers
Where double_watchers.userid = users.id;

元のクエリを使用してインライン テーブル (用語については不明) を作成し、それを USERS テーブルに結合しています。もっと効率的な方法があるかもしれませんが、今のところ、実験するためのテスト インスタンスが目の前にありません。

于 2012-04-26T03:36:35.030 に答える