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

MySQL menghitung hasil kueri yang kompleks?

Masalah Anda adalah, kueri Anda tidak mengembalikan apa yang Anda pikirkan (selalu membantu menjalankan kueri Anda secara mandiri, untuk melihat apakah kumpulan hasil sesuai dengan yang Anda harapkan).

Oke, mari kita pecahkan ini.

Anda mencoba menghitung semua pos yang tidak memiliki catatan yang cocok di tabel taksi, untuk ID pengguna itu. Yang Anda inginkan di sini adalah JOIN tabel dan dapatkan baris tersebut di post yang biasanya akan dikecualikan oleh join. Ini dicapai dengan gabungan luar kiri

(diedit )

SELECT p.ID, t.taxiID
FROM post p LEFT OUTER JOIN taxi t ON p.ID = t.taxiID AND t.userID = '.$user.'
HAVING t.taxiID IS NULL

HAVING klausa mengatakan:hanya baris dalam hasil yang tidak memiliki t.taxiID yang sesuai.

Jika Anda menjalankan kueri ini dan mendapatkan kumpulan baris yang diharapkan (postingan yang tidak disukai atau tidak disukai oleh pengguna itu), MAKA Anda dapat menambahkan kueri luar untuk menghitung jumlah baris yang dikembalikan:

SELECT COUNT(*) as count FROM (
    SELECT p.ID, t.taxiID
    FROM post p LEFT OUTER JOIN taxi t ON p.ID = t.taxiID AND t.userID = '.$user.'
    HAVING t.taxiID IS NULL
) a

Ini harus mengembalikan satu skalar bernama count. Dalam hal ini Anda dapat mengatakan:

if ($count[0]->count > 10) { blah blah blah }

(edit kedua ) Kueri dalam ini akan memberi Anda pos yang memiliki nilai =1 di tabel taksi, atau tidak ada nilai sama sekali, yang menghasilkan 4 sebagai contoh Anda:

SELECT p.ID, t.taxiID, t.value
FROM post p LEFT OUTER JOIN taxi t ON p.ID = t.taxiID AND t.userID = '.$user.'
HAVING t.taxiID IS NULL OR t.value = 1


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. permintaan mysql untuk mendapatkan hitungan berdasarkan grup dan jumlah total

  2. Melakukan aritmatika sederhana dalam pernyataan MySQL atau dalam kode PHP

  3. Cara Memasukkan Beberapa Nilai Kotak Centang ke dalam Basis Data

  4. Waktu henti peningkatan instans AWS RDS

  5. MySQL multiple WHERE AND/OR logika kondisi