質問

私はテーブル(参加者)に複数の列があり、それらはすべて別個のものである場合があります。 このクエリで特に重要な2つの列は、userIDとprogramIDです。 ここには2つの部分のクエリがあります。

  1. このテーブルに複数回表示されるすべてのユーザーIDのリストを取得できるようにします。どうやってやるの?
  2. 同じuserIDが複数のprogramIDにあるすべてのprogramIDのカウントを取得できるようにしたい。 (つまり、2つのプログラムに同じユーザーIDが表示されるプログラムの数、3つのプログラムに同じUSErIDが表示されるプログラムの数など)  例:

     programID: prog1
        userID: uid1
        userID: uid3
        userID: uid12
     programID: prog2
        userID: uid3
        userID: uid5
        userID: uid14
        userID: uid27
     programID: prog3
        userID: uid3
        userID: uid7
        userID: uid14
        userID: uid30
     programID: prog4
        userID: uid1
    

    期待される結果:      userIDカウント= 2;プログラム= 3      userIDカウント= 3;プログラム= 3

誰でも助けてください。

質問1の現在のコードは次のとおりです。

    SELECT 
    WPP.USERID, 
    WPI.EMAIL, 
    WPI.FIRSTNAME, 
    WPI.LASTNAME, 
    WPI.INSTITUTION 
    FROM WEBPROGRAMPARTICIPANTS WPP 
    INNER JOIN WEBPERSONALINFO WPI 
    ON WPP.USERID = WPI.USERID 
    INNER JOIN WEBPROGRAMS WP 
    ON WPP.PROGRAMCODE = WP.PROGRAMCODE 
    WHERE 
    WP.PROGRAMTYPE IN ('1','2','3','4','5','6', '9', '10') 
    GROUP BY 
    WPP.USERID, 
    WPI.EMAIL, 
    WPI.FIRSTNAME, 
    WPI.LASTNAME, 
    WPI.INSTITUTION 
    HAVING COUNT(WPP.USERID) > 1
    ORDER BY WPI.EMAIL
役に立ちましたか?

解決 3

これは私の側の問題であり、論理ステップは省略されました。

他のヒント

1。

select userID , SUM(userID ) AS Count 
from Preparations 
group by userID where Count > 1

パート1のクエリは適切に見えます。パート2のクエリは次のとおりです。

SELECT DISTINCT p1.programID, COUNT(p1.userID) AS Multiple
FROM participants p1
JOIN participants p2 ON p2.userID = p1.userID
GROUP BY p1.userID, programID
ORDER BY Multiple, programID

プログラムIDと、各プログラムIDに同じユーザーIDが表示される他のプログラムIDの数がリストされます。サンプルデータに対して期待される結果は間違っていると思います。次のようになります。

userID count = 1;プログラム= 3; userIDカウント= 2;プログラム= 4; userIDカウント= 3;プログラム= 3;

期待される結果のように結果を微調整する場合は、上記をサブクエリ(派生テーブル)として使用できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top