sql >> Databasteknik >  >> RDS >> Mysql

Komplicerad COUNT-fråga i MySQL

X-Zeros förslag att lägga till en "uppladdarkredit" till data är det bästa sättet att hålla frågan enkel. Om det inte är ett alternativ, gör en inre koppling mellan userprofile_videoinfo och userprofile_videocredit för att göra det enkelt att eliminera dubbletter:

SELECT u.id, u.full_name, COUNT(DISTINCT v.video_id) as credit_count
FROM userprofile_userprofile u
LEFT JOIN (SELECT vi.video_id, vi.uploaded_by_id, vc.profile_id as credited_to_id
    FROM userprofile_videoinfo vi
    JOIN userprofile_videocredit vc ON vi.id = vc.video_id
    ) v ON u.id = v.uploaded_by_id OR u.id = v.credited_to_id
GROUP BY u.id, u.full_name
ORDER BY credit_count DESC

Underfrågan kan vara användbar att skapa som en vy.



  1. MySql - verktyg för replikeringsövervakning

  2. Välj ALLA fält som endast innehåller VERSALER

  3. Exportera Oracle-frågeresultat till en HTML-fil när du använder SQLcl

  4. RENSA SKÄRM - Genväg för Oracle SQL-utvecklare?