Sql 计算左连接并在何处使用它

Sql 计算左连接并在何处使用它,sql,postgresql,typeorm,Sql,Postgresql,Typeorm,我目前拥有以下sql(由typeorm生成) 问题是,我不能使用HAVING,因为它似乎不像WHERE那样支持这种条件 我在计数部分尝试了子查询,但无法访问子选择计数查询中的“组”别名 我甚至不确定查询的其他部分是否有效,但首先我想解决“计数”问题 您是否试图查找组表中没有匹配行的实例?如果是这样,请将筛选器中的计数行替换为,并且group.id为null。向我们显示数据库架构、示例数据、当前和预期输出。请阅读,这里是学习如何提高问题质量和获得更好答案的好地方。尝试在@Andrew中创建一个示例

我目前拥有以下sql(由typeorm生成)

问题是,我不能使用HAVING,因为它似乎不像WHERE那样支持这种条件

我在计数部分尝试了子查询,但无法访问子选择计数查询中的“组”别名


我甚至不确定查询的其他部分是否有效,但首先我想解决“计数”问题

您是否试图查找
表中没有匹配行的实例?如果是这样,请将筛选器中的计数行替换为
,并且group.id为null
。向我们显示数据库架构、示例数据、当前和预期输出。请阅读,这里是学习如何提高问题质量和获得更好答案的好地方。尝试在@Andrew中创建一个示例。media_对象表与group有多对多关系,我想找到多对多关系为空的位置。这是否仍然适用于NULL,或者如果您加入一个表并且没有关系,会发生什么?NULL逻辑将从媒体表返回在组表中没有相应行的行。因此
计数(“组”)=0
“组”为NULL
 SELECT
   "media"."permissionOwner" AS "media_permissionOwner",
   "media"."permissionGroup" AS "media_permissionGroup",
   "media"."permissionOther" AS "media_permissionOther",
   "media"."id" AS "media_id",
   "media"."filename" AS "media_filename",
   "media"."mime" AS "media_mime",
   "media"."description" AS "media_description",
   "media"."length" AS "media_length",
   (
      SELECT
         1 
      FROM
         "user" "user" 
      WHERE
         "user"."id" = $1 LIMIT 1
   )
   AS "user" 
FROM
   "media_object" "media" 
   LEFT JOIN
      "media_object_groups_group" "media_groups" 
      ON "media_groups"."mediaObjectId" = "media"."id" 
   LEFT JOIN
      "group" "groups" 
      ON "groups"."id" = "media_groups"."groupId" 
   LEFT JOIN
      "media_object_owner_user" "media_owner" 
      ON "media_owner"."mediaObjectId" = "media"."id" 
   LEFT JOIN
      "user" "owner" 
      ON "owner"."id" = "media_owner"."userId" 
WHERE
   (
      "media"."permissionGroup" >= $2 
      AND 
      COUNT("groups") = 0 -- How can I accomplish this
   )
   OR 
   (
      "media"."permissionGroup" >= $3 
      AND groups @ > user_groups
   )
   OR 
   (
      owner @ > ARRAY[user] 
      AND "media"."permissionOwner" >= $4
   )
   OR "media"."permissionOther" >= $5   -- PARAMETERS: [23,4,4,4,4]