استعلام SQL للحصول على السجلات المكررة التهم بناء على عوامل أخرى

StackOverflow https://stackoverflow.com/questions/1429216

  •  07-07-2019
  •  | 
  •  

سؤال

لدي جدول (المشاركين) والتي لديها العديد من الأعمدة التي يمكن أن تكون متميزة.اثنين من الأعمدة التي هي ذات أهمية خاصة في هذا الاستعلام هي رمز المستخدم و programID لدي الجزء الثاني inquery هنا.

  1. أريد أن تكون قادرة على الحصول على قائمة من جميع userIDs التي تظهر أكثر من مرة في هذا الجدول.كيف يمكنني فعل ذلك ؟
  2. أريد أن تكون قادرة على الحصول على الاعتماد من جميع programID حيث نفس معرف المستخدم يظهر في عدة programIDs.(I. E.عدد البرامج فيها نفس معرف المستخدم يظهر في البرامج 2, عدد البرامج فيها نفس معرف المستخدم يظهر في 3 برامج, الخ...) على سبيل المثال:

     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 count = 2;البرامج = 3 userID count = 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

الاستعلام الخاص بك في الجزء الأول تبدو جيدة.هنا الاستعلام عن جزء 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

وهو يسرد programID وعدد الأخرى programIDs أن نفس معرف المستخدم يظهر في كل programID.أعتقد أن النتائج المتوقعة من الخطأ الخاصة بك بيانات العينة.ينبغي أن يكون:

userID count = 1;البرامج = 3;userID count = 2;البرامج = 4;userID count = 3;البرامج = 3;

يمكنك استخدام أعلاه فرعي (مشتقة الجدول) إذا كنت ترغب في تهذيب النتائج تبدو أكثر مثل النتائج المتوقعة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top