坚持使用SQL连接查询

Mat*_*att 1 mysql sql join

我正在制作一个Q&A网站,类似于这个网站和雅虎的答案.我有3个表 - smf_members,qa_questions和qa_answers.

在此查询中,我想从qa_questions中选择一些字段,从smf_members中选择一些字段,在question_id中选择ga_answers中的记录数.这样我就可以获得关于问题的一些基本信息,关于成员的一些基本信息以及答案的数量.

这是我到目前为止生成的查询,它几乎可以工作,但不会返回没有答案的问题(即,此问题的答案表中没有记录).

SELECT qa_questions.question_id, 
       qa_questions.question_title, 
       qa_questions.question_content, 
       qa_questions.time_asked, 
       qa_questions.question_author, 
       qa_questions.votes, 
       qa_questions.views, 
       qa_questions.pretty_url, 
       smf_members.real_name, 
       smf_members.id_member, 
       COUNT(qa_answers.question_id) AS answers 
FROM   qa_questions, 
       qa_answers, 
       smf_members 
WHERE  qa_questions.deleted = 0 
       AND smf_members.id_member = qa_questions.question_author 
       AND qa_answers.question_id = qa_questions.question_id 
ORDER  BY qa_questions.time_asked DESC 
LIMIT  10
Run Code Online (Sandbox Code Playgroud)

Red*_*ter 7

LEFT OUTER JOINqa_answers桌子上使用:

SELECT q.question_id, 
    q.question_title, 
    q.question_content, 
    q.time_asked, 
    q.question_author, 
    q.votes, 
    q.views, 
    q.pretty_url, 
    m.real_name, 
    m.id_member, 
    COUNT(a.question_id) as answers 
FROM qa_questions q
inner join smf_members m on m.id_member = q.question_author 
left outer join qa_answers a on a.question_id = q.question_id 
WHERE q.deleted = 0 
ORDER BY q.time_asked DESC 
LIMIT 10 
Run Code Online (Sandbox Code Playgroud)