如何:计算相册和子图像以及总和图像到主相册

时间:2014-11-08 17:59:44

标签: mysql mysqli

我有两张桌子

表:专辑

album_id  name       parent_album_id
------------------------------------
69        ....       NULL
71        ....       69
72        ....       69
70        ....       NULL
75        ....       NULL
74        ....       NULL
73        ....       NULL

table:album_image

album_id      image_id
----------------------
69             256
69             216
69             89
71             896
70             85

我想计算相册中的所有图片,如果某些相册有子图片,请将图片合并到主相册。

喜欢这个:

album_id        total_images
----------------------------
69              4
70              1
73              0
74              0
75              0

请注意,我不显示subalbums(id:71和id:72)

这是我已经完成的查询,但我没有显示正确的总图像

select a.album_id, count(*)
from album a
left join album a2 on a.album_id = a2.parent_album_id
join album_image ai on ai.image_id = IFNULL(a.album_id, a2.album_id)
group by a.album_id

我知道我很接近,我只是需要帮助才能做到正确。 感谢

1 个答案:

答案 0 :(得分:1)

这是你的解决方案 -

SELECT IFNULL(a.parent_album_id,a.album_id) AS album_id,sum(result.image_count) as total_images
FROM album a
LEFT JOIN (SELECT album_id,count(image_id) AS image_count FROM album_image GROUP BY album_id) result
ON result.album_id = a.album_id
GROUP BY album_id