信息:
我有一个包含任意数量相册的画廊,每个相册中可以有任意数量的图像。
因此,我有一个名为“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/