我想顯示所有沒有隱藏可見性規則的產品:true。我不能完全弄清楚SQL。我有以下4個表:左外部sql連接問題
products:
id: integer
name: string
role:
id: integer
name: string
user_roles:
user_id: integer
role_id: integer
visibility_rules:
hidden: boolean
product: integer
role: text
我嘗試以下
SELECT spree_products.*
FROM spree_products
LEFT OUTER JOIN spree_visibility_rules ON spree_visibility_rules.product_id
= spree_products.id
AND spree_visibility_rules.role_name IN ('Student','Admin')
WHERE spree_products.deleted_at IS NULL
AND (spree_visibility_rules.visible IS NULL)
如果我有多個角色(學生&管理等),然後我想找到那些可見的至少一個所有產品的用戶角色。上述sql的問題在於,如果產品對所有用戶角色都可見,它似乎只能工作。如果它隱藏在學生角色中,那麼即使其對於管理員角色可見,也不會返回該產品。我想我誤解了左外連接。
您應該提供實際的表格定義,以便披露fk引用等。「CREATE TABLE」腳本或您在psql中使用'\ d tbl'獲得的內容。 – 2014-11-05 17:04:08
您是否想要一個給定的'user_id'的可見產品列表?或所有'users_id'的所有可見產品或每個'user_id'具有可見產品的列表? – 2014-11-05 17:10:13