我有两张桌子
表:专辑
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
我知道我很接近,我只是需要帮助才能做到正确。 感谢
答案 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