Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

jumlah mysql tidak berfungsi dengan benar?

Anda perlu menambahkan semua kolom yang Anda pilih di SELECT klausa kecuali c.USER_ID ke GROUP BY klausa, seperti ini:

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

EDIT: Saya pikir yang berikut ini akan berfungsi dengan baik:

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 

Contoh: Jika Anda memiliki contoh data berikut:

  • 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
    

Kasus 1:pengguna Mahmoud ditampilkan dua kali:

Kemudian, kueri sebelumnya akan memberi Anda jumlah komentar untuk setiap Pengguna dan juga untuk setiap item, seperti ini:

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

Perhatikan bahwa pengguna Mahmoud ditampilkan dua kali dengan hitungan yang berbeda, karena ia memiliki Item_Id yang berbeda .

Kasus 2:pengguna Mahmoud hanya ditampilkan satu kali:

Jika Anda ingin mendapatkan jumlah komentar untuk setiap pengguna untuk semua item, maka Anda hanya perlu mengelompokkan berdasarkan USER_ID dan Anda akan mendapatkan:

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

Seperti yang Anda lihat sekarang, pengguna Mahmoud ditampilkan hanya satu kali, karena kita menggunakan Item_Id .

Anda kemudian dapat memfilter berdasarkan status atau apa pun.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. CodeIgniter Pilih Pernyataan dengan klausa Where

  2. MYSQL TANGGAL RANGE dan RANGE WAKTU

  3. Bagaimana cara menggunakan string .format() dalam pernyataan MySQL?

  4. Pilih dari tabel mysql WHERE field='$array'?

  5. Kesalahan saat menggunakan array_push -- Argumen pertama harus berupa array