sql >> Database >  >> RDS >> Mysql

mysql count werkt niet goed?

U moet alle kolommen toevoegen die u selecteert in de SELECT clausule behalve de c.USER_ID naar de GROUP BY clausule, zoals deze:

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

BEWERKEN: Ik denk dat het volgende goed zal werken:

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 

Voorbeeld: Als u over de volgende voorbeeldgegevens beschikt:

  • 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
    

Geval 1:de gebruiker Mahmoud wordt twee keer weergegeven:

Vervolgens geeft de vorige zoekopdracht u het aantal opmerkingen voor elke gebruiker en ook voor elk item, als volgt:

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

Merk op dat de gebruiker Mahmoud wordt twee keer weergegeven met een andere telling, omdat hij verschillende Item_Id . heeft .

Geval 2:de gebruiker Mahmoud wordt slechts één keer weergegeven:

Als u het aantal opmerkingen voor elke gebruiker voor alle items wilt zien, hoeft u alleen op de USER_ID te groeperen en je krijgt:

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

Zoals je nu kunt zien is de gebruiker Mahmoud wordt slechts één keer weergegeven, omdat we Item_Id . hebben gebruikt .

Je kunt dan filteren op status of wat dan ook.



  1. Pymysql Cursor.fetchall() / Fetchone() Retourneert Geen

  2. PDO Kan geen query's uitvoeren terwijl andere niet-gebufferde query's actief zijn

  3. PHP PDF generatie probleem

  4. Postgres JDBC-verbinding in Eclipse Help