我有幾個問題爲Oracle編寫連接語句。我想我想要使用左連接,但我不是100%確定的。加入兩張表,其中可能不存在連接
這裏是我的兩個表
**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子句。這是動態生成的,然後根據來自配置文件的值傳入。
例如,ProductID 85322已被標記爲Private EPGBio,但是當我選擇Industry EPGMethane時,它不顯示爲「未評論」。它顯示爲標記爲Private。
如果'Industry = xxx'在你的where子句中,當然你不會得到沒有可見性條目的行。編輯:剛剛看到戈登的答案。是的,通過在您的where子句中過濾Industry,您正在擊敗您的左連接的目的。 – Scotch 2013-02-26 17:15:15
你的意思是「那些在選定行業中未被標記的」?這不是什麼*未標記*的意思? – 2013-02-26 18:36:19
是的,但尚未標記的記錄在VisibilityTable中沒有條目,只有已標記的記錄才具有該條目。理論上,VisibilityTable將具有(產品數量*行業數量)條目。 – Jabsy 2013-02-26 18:42:45