我有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足以满足此查询的需要,并引入表别名来简化此查询。

10-01 20:13