3 tablolar var:MySQL SOL JOIN ve COUNT()
- forumları
kimliği, ad, açıklama
- adet başlık
thread_id, forum_id, user_id, başlık, içerik, görünümler
Post_id, thread_id, AUTHOR_ID, içerik, tarih
Yapmak istediğim konu, bir forumdaki tüm konulara ulaşmak ve her iş parçacığının mesaj sayısını almaktır. Bu yüzden her iş parçacığı (WHERE forum_id = neyse) alıyorum ve sonra sonuçları saymak için tablo yayınları ile birlikte LEFT JOIN. Ama bir şey çalışmıyor.
SELECT t.*, u.nick, COUNT(p.post_id) AS postcount
FROM
threads t
LEFT JOIN
users u
ON
u.id = t.user_id
LEFT JOIN
posts p
ON
p.thread_id = t.thread_id
WHERE
t.forum_id = $this->forumID
Bu sorgu sadece (Sanırım) üzerinde herhangi bir yayını olan konuları gösterecektir: İşte benim sorgusu olur. Ben de
Bunu nasıl çözebilir ... Bu MySQL hata yapar ama BY ifadesi GROUP kullanarak çalıştı?----------- DÜZENLEME: Daha önce söylediğim gibi ben ancak t.thread_id GROUP BY ekleyerek çalıştı , MySQL hataları:
Bir hata var SQL sözdizimi; yakın kullanma hakkı sözdizimi için MySQL sunucu sürümü ile uyumlu kılavuzu 'NEREDE t.forum_id = 2' hattında 15
Tam sorgusu:
SELECT t.*, u.nick, COUNT(p.post_id) AS postcount
FROM
threads t
LEFT JOIN
users u
ON
u.id = t.user_id
LEFT JOIN
posts p
ON
p.thread_id = t.thread_id
GROUP BY
t.thread_id
WHERE
t.forum_id = $this->forumID
DÜZENLEME 2:
Kötü, GROUP BY ifadesini koymak istediğim yere koyuyorum. Şimdi çözüldü.