0

sqlite ファイルのすべてのフィールド (列) を検索しようとしていますが、常に有効な結果が得られません。これがコードです。何か違うことを試す必要がありますか?

Select * From session
join sessiontype using(SESSIONTYPEID)
join camera on SESSION.[CameraID] = camera.CameraID
join chemicals on session.[DeveloperID] = chemicals.[ChemicalsID] 
               or session.[FixerID] = chemicals.[ChemicalsID]
join shop on session.[DEVELOPEDBYID] = shop.[ShopID]
join film on session.[FilmID] = film.[FilmID]
join vendor on film.[VendorID] = vendor.[VendorID]
where session.[Identifier] like('%agfa%') 
or session.[Notes] like('%agfa%')
or sessiontype.[SessionTypeName] like('%agfa%')
or camera.[CameraName] like('%agfa%')
or chemicals.[ChemicalsName] like('%agfa%')
or session.[DeveloperTemp] like('%agfa%')
or session.[DeveloperTime] like('%agfa%')
or session.[FixerTemp] like('%agfa%')
or session.[FixerTime] like('%agfa%')
or shop.[ShopName] like('%agfa%')
or session.[StopBathTemp] like('%agfa%')
or session.[StopBathTime] like('%agfa%')
or vendor.[VendorName] like('%agfa%')
order by session.[Identifier], sessiontype.[SessionTypeName], session.[Date]

「agfa」を含むエントリは 1 つだけです。次の行は、1 つのエントリを 2 回返します: joinchemicals on session.[DeveloperID] =chemicals.[ChemicalsID] OR session.[FixerID] =chemicals.[ChemicalsID]

次のエントリは結果を返しません: セッションで化学物質に参加します。

行を削除すると、正しい 1 エントリが返されます。

4

1 に答える 1

0
  1. たぶん、いくつかの外部結合が必要ですか?
  2. オラクルに取り組んでいますか?JOIN の OR 句で奇妙な問題が発生したとき、それは正しく機能しませんでした。誰もがその理由を知っていました... JOIN を WHERE 句に変換して実験してみてください

注: OR と LIKE は非常にコストのかかる操作です

于 2013-10-08T19:19:25.217 に答える