如何通过SQL选择基于多个别名连接的记录?

时间:2014-01-31 03:22:25

标签: sql postgresql join

我正在尝试基于权限进行记录连接,其中至少有2个人共享权限。 请注意,在permissions子句的一侧,它可以是一组用户中的任何人。

另一方面,它必须与给定的id匹配。

到目前为止,我已尝试执行以下操作,但它不会返回用户2702和2606都存在的联系人记录:

SELECT DISTINCT "contacts".* FROM "contacts"
  LEFT OUTER JOIN "permissions" 
    ON "contacts"."id" = "permissions"."contact_id"
  LEFT OUTER JOIN "permissions_users" 
    ON "permissions"."id" = "permissions_users"."permission_id"
  LEFT OUTER JOIN "permissions_users" "permissions_users_2" 
    ON "permissions"."id" = "permissions_users_2"."permission_id"
  WHERE ("permissions_users"."user_id" IN (2727, 2606, 2729)
    AND "permissions_users_2"."user_id" IN (2702))
    ORDER BY name_sort asc nulls last LIMIT 40 OFFSET 0

0 个答案:

没有答案