Ada 2 masalah:
- Anda memerlukan
LEFT JOINpada teman.LEFT JOINmengatakan untuk mengembalikan semua record dari tabel pertama di join meskipun tidak ada hasil yang ditemukan di tabel kedua di join. Anda juga harusWHEREketentuan klausa yang berkaitan denganfriendske dalamLEFT JOINklausa, sehingga kondisi terjadi pada join. Anda juga harus menggunakanm.idsedapat mungkin dalam bergabung Anda alih-alih$myIduntuk menghilangkan redundansi. - Klausa WHERE Anda terlalu membatasi (kondisi berlebihan). Selalu gunakan kondisi yang paling sederhana, dan masukkan sebanyak mungkin yang sesuai di
JOINjadi lebih mudah dibaca.
Contoh (Diedit untuk menambahkan kiriman dari teman juga):
$query = "SELECT DISTINCT `u`.`id`, `p`.`byuser`, `p`.`newpost`, `p`.`id`, `p`.`postdate`
FROM `users` AS `u`
LEFT JOIN `friends` AS `f`
ON `f`.`userid` = `u`.`id`
OR `f`.`friendid` = `u`.`id`
JOIN `pinnwand` AS `p`
/* This will get all posts made by the user */
ON `p`.`byuser` = `u`.`id`
/* This will get all posts made TO the user by friends */
OR (`p`.`byuser` IN (`f`.`userid`, `f`.`friendid`)
AND `p`.`touser` = `u`.`id`)
WHERE `u`.`id` = {$myId}
AND `p`.`publicp` < 3
AND `p`.`typ` = 2
ORDER BY `p`.`id` DESC
LIMIT {$limit}, 10";