fatihsarac adlı üyeden alıntı: mesajı görüntüle
hocam sorguna fazla bakamadım ama mantığın doğru fakat ileride veritabanın kalabalıklaşmaya başladığında sıkıntı yaratacak bir sorgu. ilk önce sorulara bağlan, oradan cevaplarına geç, toplamını al, sıfır olanları göster.

benim sana tavsiyem şu;

sonuçta senin bir tane "questions" tablon var, bu "questions" tablona "q_answer_total" diye bir sütün daha aç, oraya o soru için verilmiş cevap sayısını yazdır.

yani sorular tablondaki soru satırına o soru için verilmiş cevap sayısını da yazdır. tabii ilk soru açıldığında bu cevap sayısını "0" olarak belirt. böylelikle ne o kadar çok uzun sorgu yazmış olursun ne de tablolar arasında bağlantı yapıp, toplam alıp v.s. gibi uzun bir sorgu yazmamış olur ve daha hızlı dönüş alırsın. naçizane.
_LosT_ adlı üyeden alıntı: mesajı görüntüle
1. soru için

WHERE SELECT'den önce çalıştırıldığı için direk öyle yapamazsın. Şöyle bir şey deneyebilirsin.

SELECT
questions.q_id, questions.q_seo, questions.q_title, questions.q_from, questions.q_date, questions.q_category, questions.q_date_unix,
categories.c_id, categories.c_seo, categories.c_name,
users.u_id, users.u_username, users.u_image,
(SELECT COUNT(a_id) FROM answers WHERE a_question = questions.q_id) AS question_answer_count
FROM
questions
LEFT JOIN categories ON questions.q_category = categories.c_id
LEFT JOIN users ON questions.q_from = users.u_id
HAVING question_answer_count > 0
Cevaplar için teşekkürler.

Her soruya bağlı cevap sayısını, questions tablosunda açacağım yeni bir q_answer_count sütunu ile tutacağım. Cevap eklenmesi yada silinmesi durumunda burayı güncelleyeceğim. Bu şekilde kullanımın doğru olacağında sanırım hemfikiriz.

Ben soruları listeleyeceğim. Soruların yanında yorum sayısını bu şekilde alacağım. Soruyu soran ve sorunun kategorisi bilgilerini sorguda kullandığım şekilde almamda bir sorun var mı peki? Böyle mi yapsam daha doğru olur, yoksa soruların listeleneceği döngünün içinde her seferinde yeni bir sorgu ile soran ve kategori bilgilerini alsam mı daha doğru olur?