-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 を意味します) それらも選択します (そのような行がある場合のみ)。つまり、結果に追加します。

1つのSQL文だけでこれを達成する方法はありますか?

アップデート

ここに画像の説明を入力

たとえば、クエリを実行するとき

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

ID 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 に答える