Frage

Ich habe eine Tabelle (Teilnehmer), die mehrere Spalten hat, die alle verschieden sein könnte. Zwei Spalten, die in dieser Abfrage von besonderem Interesse sind, sind die Benutzer-ID und die ProgramID Ich habe einen zweiteiligen inquery hier.

  1. Ich will die Liste alle Benutzer-IDs erwerben können, die mehr als einmal in dieser Tabelle angezeigt. Wie gehe ich dagegen zu tun?
  2. Ich möchte in der Lage, die Anzahl aller ProgramID des zu erwerben, wo die gleiche Benutzer-ID in mehreren programIDs erscheint. (D Anzahl der Programme, bei denen gleiche Benutzer-ID in zwei Programmen angezeigt wird, Anzahl der Programme, bei denen gleiche Benutzer-ID erscheint in 3-Programme, etc ...)  Zum Beispiel:

     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
    

    Erwartete Ergebnisse:      userID count = 2; Programme = 3      userID count = 3; Programme = 3

Kann mir jemand bitte helfen Sie mir mit diesem.

mein aktueller Code für Frage 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
War es hilfreich?

Lösung 3

Dies war ein Problem auf meiner Seite, mit einem logischen Schritt, der ausgelassen wurde.

Andere Tipps

1.

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

Ihre Anfrage für einen Teil sieht man gut. Hier ist Ihre Abfrage für Teil 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

Es listet ProgramID und die Anzahl der anderen programIDs, die die gleiche Benutzer-ID für jede ProgramID erscheint in. Ich denke, Ihre erwarteten Ergebnisse für Ihre Beispieldaten falsch sind. Es sollte sein:

userID count = 1; Programme = 3; userID count = 2; Programme = 4; userID count = 3; Programme = 3;

Sie können die oben als Unterabfrage (abgeleitete Tabelle) verwenden, wenn Sie die Ergebnisse für die Feinabstimmung wollen Ihre erwarteten Ergebnisse sehen eher aus wie.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top