-5

我的 SQL 语句看起来像这样

SELECT qe.id, qe.content, a.id, a.content, a.addDT, acr.checked, acr.score  
FROM `questions_and_exercises` qe, 
`questions from-to` qft 
LEFT JOIN `questions-answers` qa ON (qa.qid=qe.id AND qa.uid=qft.uid) 
LEFT JOIN answers a ON (a.id=qa.aid) 
LEFT JOIN `answer_chk_results` acr ON (acr.aid=a.id)
AND qft.to_lid=2 
WHERE qft.to_uid=3 

现在,WHERE部分没有做我想做的事。试图达到这个结果:

  • 全选 qft.to_lid=? (这意味着 qft.to_uid=NULL)(总是)
  • 如果有 qft.to_uid=? (这意味着 qft.to_lid=NULL)也选择它们(仅当有这样的行时)。换句话说,追加到结果。

无论如何只有一个sql语句来实现这个?

更新

在此处输入图像描述

例如,当我查询时

WHERE qft.to_lid=2 AND qft.to_uid=NULL
WHERE qft.to_uid=2 AND qft.to_lid=NULL

我想获取 ids: 4,5,6 的行。如果其中一个条件没有结果,则显示另一个。换句话说,这个条件之间没有任何关系

4

1 回答 1

0
SELECT qe.id, qe.content, a.id, a.content, a.dt, acr.checked, acr.score  
FROM `questions_and_exercises` qe, 
`questions from-to` qft 
LEFT JOIN `questions-answers` qa ON (qa.qid=q.id AND qa.uid=?) 
LEFT JOIN answers a ON (a.id=qa.aid) 
AND qft.to_lid=? 
AND qft.uid=? 
于 2012-07-27T13:15:47.370 回答