0

私はこれをChromeWebDB/SQLiteで行っています

メンバーテーブルと、メンバーが回答した場合と回答しなかった場合の回答テーブルがあります。

私はメンバーの名前と彼らが与えた答えを含む結果セットを取り戻そうとしています。しかし、彼らが答えを与えなかった場合でも、私は彼らの名前を取り戻したいと思っています。

誰かがこれについて私を助けてくれるでしょうか?

SELECT m.LastName, 
       m.FirstName, 
       m.MiddleName, 
       s.surveyAnswer 
FROM Members m 
    LEFT JOIN SurveyAnswers s 
      ON s.memberID = m.id 
WHERE m.id = ? 
AND s.eventID = ? 

[results.rows.item(i).memberID、eventId]、

これは私が試していることですが、それでも質問に回答し、SurveyAnswersテーブルにあるメンバーのみを受け取ります。

4

4 に答える 4

2

s.eventIDではなく結合の一部にしWHEREます。

select ステートメントは次のようになります。

SELECT m.LastName, 
       m.FirstName, 
       m.MiddleName, 
       s.surveyAnswer 
FROM Members m 
    LEFT JOIN SurveyAnswers s 
      ON s.memberID = m.id 
        AND s.eventID = ? 
WHERE m.id = ? 
于 2012-07-06T22:34:01.660 に答える
1

ジョインは最近、ベン図の形で説明され、それ以来、クエリでどのジョインを使用するかが非常に明確になりました。

以下にリンクされているページを見てください。同じ方法で説明されています。どの結合が必要かを再度確認する必要がなくなることをお約束します。

SQL 結合の視覚的な説明

于 2012-07-06T22:34:50.053 に答える
1

LEFT OUTER 結合を使用する必要があります。また、where 句ではなく、結合で SurveyAnswers eventID の条件を指定する必要もあります。このようなもの:

SELECT m.LastName, m.FirstName, m.MiddleName, s.surveyAnswer FROM Members m 
LEFT OUTER JOIN SurveyAnswers s ON (s.memberID = m.id AND s.eventID = ?) 
WHERE m.id = ? 
于 2012-07-06T22:35:51.763 に答える
0

LEFT OUTER JOINを使用したい。

于 2012-07-06T22:28:45.787 に答える