Merhabalar.

Bir soru-cevap sistemi üzerinde çalışıyorum. OOP mantığı ile götürüyorum.

Soruların listelendiği bir sayfam var. Sorular, en son eklenen, en beğenilen, en çok görüntülenen vs şeklinde farklı şekillerde sıralanabilecek.

Gerekli olan 4 tablomun adları questions, answers, categories, users.

Her tablonun gerekli olan sütünları;

questions
---q_id : Soru ID'si
---q_seo : Soru başlık seo hali
---q_title : Soru başlığı
---q_from : Soruyu soranın ID'si
---q_date : Sorulma tarihi
---q_category : Soru kategorisi
---q_date_unix : Soru tarihinin unix time formatındaki hali

categories
---c_id : Kategori ID
---c_seo : Kategori adı seo hali
---c_name : Kategori adı

users
---u_id : Kullanıcı ID
---u_username : Kullanıcı adı
---u_image : Kullanıcı imaj

answers
---a_id : Cevap ID
---a_question : Cevabın bağlı olduğu soru ID'si

Bu tablolar birbirlerine;
q_category & c_id
a_question & q_id
q_from & u_id

ile bağlılar.

Ben şu sorgu ile sorulara, soruların bağlı olduğu kategorilere, soruları soran kişilere tek sorgu ile erişebiliyorum. Hatta her soruya karşılık gelen cevap sayılarını da alabiliyorum.

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_comment_count
FROM
questions
LEFT JOIN categories ON questions.q_category = categories.c_id
LEFT JOIN users ON questions.q_from = users.u_id
Ben bu sorguyu 2 farklı şekilde daha çalıştıracağım.

1. durum: 0 cevap sayısına sahip olan sorular
Cevap sayısı 0 olan yani hiç cevap almamış olan soruları almak istiyorum. Şu şekilde bir kullanım denedim;

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
WHERE question_answer_count=0
Yani en sona WHERE question_answer_count=0 satırını ekledim. Şöyle bir hata aldım.

Unknown column 'question_answer_count' in 'where clause' in
1. sorum: Sadece cevap sayısı 0 olan satırları nasıl alabilirim?

2. durum: Soruları cevap sayısına göre sıralamak istiyorum. Bunu nasıl sağlayabilirim. Yine kurabildiğim mantık şu şekilde.

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
ORDER BY question_answer_count ASC
Bu sorgu sorunsuz çalıştı. Bu durumda sormak istediğim şu.

2. sorum: Bu kullanım doğru bir kullanım mıdır?

Bu 2 konuda bana yardımcı olabilirseniz sevinirim. Şimdiden teşekkürler.