我有两张桌子:
表1:
genreartismap:
id - pk
artistid
genreid
val - this column has default value 1
表2:
genre:
id - pk
name
现在我要做的是在genreartismap.artistid列表中获取不同的genre.names。
对于Ex:
我有genreartismap.artistid = 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
答案 0 :(得分:1)
我认为你在错误的专栏上做了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
足以支持此查询,并引入表别名来简化它。