Oracleのjoinステートメントの作成でいくつか問題が発生しています。左結合を使用したいと思いますが、100%確実ではありません。
これが私の2つのテーブルです
**VisibilityTable**
Industry
ProductID
Visibility
etc
**ItemTable**
ProductID
Other Info
etc
これが問題です。私は〜15の産業を持っています。各業界は、好みに基づいて製品(〜15000)をパブリックまたはプライベートとしてマークできるようにしたいと考えています。パブリックまたはプライベートに設定されている特定の業界の製品を表示したい場合に、クエリが機能します。
私が直面している問題は、ある業界で製品がパブリックまたはプライベートとしてマークされた後、まだマークされていない業界では表示されなくなったことです。これはこれまでの私の質問です:
SELECT v.*, NVL(b.VISIBILITY,'Not Marked') Visibility
FROM ItemTable v
LEFT OUTER JOIN VisibilityTable b ON b.ProductID = v.ProductID
WHERE (
(v.STATUS LIKE 'Filter' or 'Filter' LIKE 'All') AND
(v.MODEL LIKE 'Filter' or 'Filter' LIKE 'All') AND
(v.DUTY LIKE 'Filter' or 'Filter' LIKE 'All') AND
(v.CERTIFICATION LIKE 'Filter' or 'Filter' LIKE 'All')
)
これは、「マークなし」、「プライベート」、「パブリック」としてマークされているアイテムを取得するために機能しますが、選択した業界でマークされていないアイテムを取り戻すことはできません。
編集:完全なwhere句を追加しました。これは動的に生成され、構成ファイルからの値に基づいて渡されます。
たとえば、ProductID85322はIndustryEPGBioに対してプライベートとしてマークされていますが、Industry EPGMethaneを選択すると、「未レビュー」として表示されません。プライベートとしてマークされて表示されます。