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