0

我有 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只选择有答案的问题。我怎样才能实现我的想法?有什么建议么?提前谢谢

4

2 回答 2

3

如果你想要没有 a 的行你不能有a,将它移到部分WHEREON

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=?
于 2012-07-19T08:42:22.817 回答
0

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

于 2012-07-19T08:38:32.077 回答