-2

iOS の SQLite でクエリを作成していますが、0 行が返されることがあります。エラーはありますか?

SELECT mcon.MessageDictKey, 
       mcon.EMail, 
       con.Name, 
       con.ShowOnLists, 
       mcon.ContactType
  FROM MessageContacts AS mcon
  LEFT JOIN Contacts AS con ON mcon.EMail=con.EMail 
 WHERE mcon.MessageDictKey='5-131' 
   AND mcon.ContactType=0
4

1 に答える 1

1

あなたの質問は逆だと思います。連絡先から選択したいものを信じて、MessageContacts に LEFT JOIN します。連絡先にメッセージがなくても、常に連絡先を返したい. あなたのクエリは、「連絡先がなくても、常にメッセージが欲しい」と言っていますが、これは逆です。

SELECT mcon.MessageDictKey, 
       mcon.EMail, 
       con.Name, 
       con.ShowOnLists, 
       mcon.ContactType
  FROM Contacts AS con
  LEFT JOIN MessageContacts AS mcon ON mcon.EMail=con.EMail  AND mcon.MessageDictKey='5-131' AND mcon.ContactType=0

また、WHERE 句を ON ステートメントに移動しました。WHERE に入れると、基本的に LEFT JOIN が INNER JOIN のように動作します (一致しないレコードには WHERE 句を渡す値が強制されるため)。

これがあなたが望むものでない場合は、教えてください。私の答えを削除します。このすべてをコメントで正確に伝えることができなかったので、回答として送信しました。

于 2012-12-04T13:31:49.330 に答える