mysql - 使用 mysql 查询计算 "trash bin"中的所有项目

标签 mysql join count sum

信息:

我有一个包含任意数量相册的画廊,每个相册中可以有任意数量的图像。

因此,我有一个名为“gallery_album”的表,其中包含所有专辑。我还有一个名为“gallery_item”的表,其中包含每个专辑的所有项目。

我想做的事情:

我希望能够确定垃圾箱中有多少个项目(相册和项目)作为一个值。

如果相册位于回收站中,则所有项目也应该位于回收站中。

我已经做出了以下声明,但我仍然需要以某种方式获取计数的总和,以便它以一个值呈现,而不是每个专辑一行。 (我不知道这是否是最好的方法,所以请纠正我!)

(当状态为-2时,它被注册为在垃圾箱中。我不想在用-2标记相册时用-2标记所有项目)

SELECT a.id, 
CASE a.status
  WHEN -2
  THEN (
    SELECT COUNT(*)
    FROM gallery_item i
    WHERE i.fk_album = a.id
  ) + 1
  ELSE (
    SELECT COUNT(*)
    FROM gallery_item i
    WHERE (i.fk_album = a.id) && (i.status = -2)
  )
END as cnt, a.status
FROM gallery_album a
GROUP BY a.id

提前致谢!

最佳答案

好吧,玩了一下之后,我解决了......但我仍然想知道是否有更聪明的方法?

这是我的解决方案:

SELECT SUM(albums_and_items.cnt)
FROM (
  SELECT
  CASE a.status
    WHEN -2
    THEN (
      SELECT COUNT(*)
      FROM gallery_item AS i
      WHERE i.fk_album = a.id
    ) + 1
    ELSE (
      SELECT COUNT(*)
      FROM gallery_item AS i
      WHERE (i.fk_album = a.id) && (i.status = -2)
    )
  END as cnt
  FROM gallery_album AS a
  GROUP BY a.id
) AS albums_and_items

关于mysql - 使用 mysql 查询计算 "trash bin"中的所有项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7416929/

相关文章:

php - MySQL 从两列表中选择

php - SQL事务和表SELECT LOCK说明

php - 获取组成员的连接查询,然后在 Laravel 中获取组作为查询

mysql - 按 Count(field) 排序,但所有行都在答案中

php - 连接并计算mysql中的多行

MySQL 使用的内存比在 Docker 容器中配置的内存多

php - 新闻 系统问题(PHP 和 Mysql)

mysql - 根据另外 2 个表的联接结果插入到一个表中

sql - 为什么 LEFT JOIN 后行数增加

mysql 计数(SUM CASE)与同一张表上的连接