无法找出将返回所需结果的MySQL语句

时间:2012-07-19 08:31:15

标签: sql

我有3张桌子:

  • 问题
  • 答案
  • qa_assoc代表question id<->answer id关系

我正在尝试做的是:选择所有问题,如果有任何问题有答案也选择答案。

SELECT q.id, q.content, a.id, a.content, a.dt 
        FROM questions q 
        JOIN qa_assoc qaa ON qaa.qid=q.id
        JOIN answers a ON a.id=qaa.aid
        WHERE q.course_id=? AND q.lesson_id=? AND a.user_id=?

但是这个sql只选择有答案的问题。我怎样才能实现我的想法?有什么建议? thx提前

2 个答案:

答案 0 :(得分:3)

如果您想要没有 a 的行,将其移至WHERE部分ON中不能 >

SELECT q.id, q.content, a.id, a.content, a.dt 
FROM questions q 
LEFT JOIN qa_assoc qaa ON (qaa.qid=q.id)
LEFT JOIN answers a ON (a.id=qaa.aid  AND a.user_id=?)
WHERE q.course_id=? AND q.lesson_id=?

答案 1 :(得分:0)

你尝试过内/外/左连接吗? 看看:http://dev.mysql.com/doc/refman/5.1/en/join.html