我有2张桌子:
表格1:
genreartismap:
id - pk
artistid
genreid
val - this column has default value 1
表2:
genre:
id - pk
name
现在,我要尝试的是根据genreartismap.artistid列表获得不同的genre.names。
例如:
我有genreartismap.artistid's = 7,4,6,9,10,8
我有genreartismap.genreid与此列表艺术家相关联= 4,5,6
我正在尝试获得以下结果:
genreid genrename count
4 Electronica 2
5 Punk 4
6 EDM 3
我写了以下查询:
SELECT `genreartistmap`.genreid AS id, `genre`.name AS name, SUM( `genreartistmap`.val ) AS val
FROM `genreartistmap`
LEFT JOIN `genre` ON `genreartistmap`.artistid
IN ( ids )
GROUP BY genreid
最佳答案
我认为您在错误的列上执行了join
。我希望genreartistmap.genreid = genre.id
:
SELECT gam.genreid AS id, g.name AS name, SUM(gam.val ) AS val
FROM `genreartistmap` gam JOIN
`genre` g
ON gam.genreid = g.id
GROUP BY gam.genreid;
我还认为
inner join
足以满足此查询的需要,并引入表别名来简化此查询。