Mysql
 sql >> Baza danych >  >> RDS >> Mysql

licznik mysql nie działa poprawnie?

Musisz dodać wszystkie wybrane kolumny w SELECT klauzula z wyjątkiem c.USER_ID do GROUP BY klauzula, np.:

group by c.ID, c.otherfields, l.title,..

EDYTUJ: Myślę, że następujące działania będą działać poprawnie:

SELECT count(c.USER_ID) as total_commments_user , 
       c.*, u.NAME, l.TITLE as LINK_TITLE, u.AUTH_IMG
FROM `PLD_COMMENT` c 
left outer join `PLD_USER` u ON (u.ID = c.USER_ID) 
left outer join `PLD_LINK` l ON (l.ID = c.ITEM_ID) 
group by c.ITEM_ID, c.USER_ID
ORDER BY c.USER_ID, l.ID 

Przykład: Jeśli masz następujące przykładowe dane:

  • PLD_LINK:

    ID   STATUS   TITLE    
    1      1      title1
    2      2      title2
    
  • PLD_USER:

    ID     NAME
    8    Mahmoud
    9     Ahmed
    
  • PLD_COMMENT:

    ID   ITEM_ID USER_ID   STATUS
    4      1        8        1
    5      1        8        1
    6      1        8        1
    7      2        8        2
    8      2        8        2
    9      1        9        1
    10     1        9        1
    

Przypadek 1:użytkownik Mahmoud jest wyświetlany dwukrotnie:

Następnie poprzednie zapytanie poda liczbę komentarzy dla każdego użytkownika i dla każdego elementu, tak jak poniżej:

total_commments_user  ID  ITEM_ID   USER_ID   Name
         3            4      1         8     Mahmoud
         2            7      2         8     Mahmoud
         2            9      1         9      Ahmed

Zauważ, że użytkownik Mahmoud jest wyświetlany dwa razy z inną liczbą, ponieważ ma inny Item_Id .

Przypadek 2:użytkownik Mahmoud jest wyświetlany tylko raz:

Jeśli chcesz uzyskać liczbę komentarzy dla każdego użytkownika dla wszystkich elementów, musisz pogrupować tylko według USER_ID a otrzymasz:

total_commments_user  ID  ITEM_ID   USER_ID   Name  
         5            4      1         8     Mahmoud
         3            9      1         9      Ahmed

Jak widać, użytkownik Mahmoud jest wyświetlany tylko raz, ponieważ wprowadziliśmy Item_Id .

Następnie możesz filtrować według statusu lub czegokolwiek.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dane open source rosną:wybór MySQL, NoSQL lub obu

  2. Jak przekroczyć limit czasu zapytania mysql++ w c++

  3. dlaczego mysqld znajduje się w 4 miejscach w systemie linux?

  4. Jak ustawić maksymalną liczbę procesów lub wątków MySQL?

  5. Pomoc w chwytaniu (INNER?) JOIN