我有这个资产表:
asset_id | mediumint(8)
asset_type_id | mediumint(8)
asset_name | varchar(200)
Run Code Online (Sandbox Code Playgroud)
和查找表:
product_id | mediumint(8)
asset_id | mediumint(8)
sequence | smallint(3)
Run Code Online (Sandbox Code Playgroud)
基本上,查找表可以具有项目的多个资产条目.您可以在资产表中获取项目描述.
资产根据其asset_type_id分类为图像,视频,声音等.该asset_type_id由整数1到16组成.
现在,我想计算特定项目的图像(1),视频(2)和声音(3)的数量.无论如何我可以使用一个SELECT QUERY来做到这一点吗?
我不能将我的选择限制为asset_type_id = 1或2或3,因为我仍然需要其他资产数据.
SELECT
l.product_id, t.asset_type_id, COUNT(*)
FROM
lookup l
CROSS JOIN
(SELECT 1 AS asset_type_id UNION ALL SELECT 2 UNION ALL SELECT 3) t
LEFT JOIN
assets a ON l.asset_id = a.asset_id AND t.asset_type_id = a.asset_type_id
GROUP BY
l.product_id, t.asset_type_id;
Run Code Online (Sandbox Code Playgroud)
编辑:作为单独的列
SELECT
l.product_id,
COUNT(CASE WHEN a.asset_type_id = 1 THEN 1 END) AS asset_count_image,
COUNT(CASE WHEN a.asset_type_id = 2 THEN 1 END) AS asset_count_video,
COUNT(CASE WHEN a.asset_type_id = 3 THEN 1 END) AS asset_count_sound
FROM
lookup l
LEFT JOIN
assets a1 ON l.asset_id = a.asset_id AND a.asset_type_id IN (1, 2, 3)
GROUP BY
l.product_id;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
933 次 |
| 最近记录: |