0

複数のテーブルに 1 つのビューとしてアクセスしようとしていますが、クエリ内のデータと一致しません。問題がビュー宣言にあることは確かです。

CREATE VIEW IF NOT EXISTS method_view 
AS SELECT 
 peercreateddata.id,
 peercreateddata.name,
 peercreateddata.shared,
 peercreateddata.authorHash,
 peercreateddata.creationDate,
 peercreateddata.firstSeen,
 peercreateddata.lang,
 methods.primaryMatch,
 methods.methodHash,
 methods.methodbyline,
 methods.methodexpirationDate,
 methods.methodlocation,
 localResources.localmimeType,
 remoteResources.remotemimeType,
 remoteResources.remotelocation 

FROM peercreateddata peercreateddata,
 methods methods,
 localResources localResources,
 remoteResources remoteResources 

WHERE (methods.peerDataId = peercreateddata.id) 
      AND (localResources.localMethodId = methods.id) 
      AND (remoteResources.remoteMethodId = methods.id) ;

WHERE 句を見ると、methods.peerDataId は常に peercreateddata.id の単一の値と一致します。テーブル localResources および remoteResources は空である場合もあれば、クエリとの一致が含まれていない場合もあれば、複数の一致が含まれている場合もあります。

私はAndroid向けに開発しています。構文はバリデーターを渡します (ただし、'name' というフィールドの使用については不満があります)。

4

1 に答える 1

1

内部結合句と外部結合句を使用します。ドキュメントを参照してください。

from句をこれに置き換えて、whereを取り除きます

FROM peercreateddata peercreateddata
 inner join methods methods 
       on methods.peerDataId = peercreateddata.id
 left outer join localResources localResources 
       on localResources.localMethodId = methods.id
 left outer join remoteResources remoteResources 
       on  remoteResources.remoteMethodId = methods.id
于 2012-12-22T14:01:49.620 に答える