我需要编写SQL来加入3个表的帮助

时间:2019-06-27 19:10:17

标签: mysql sql postgresql

我看到这里有一些关于三个表的SQL连接的不同线程。我有一个不同的问题正在给我带来麻烦。这可能是数据库设计问题,或者我没有正确使用联接? 我有三张桌子

artists (id, name)
contents (id, artist_id, title)
sales (id, artist_id, content_id, revenue, sales_date)

在我的数据库中,我想要获取每个艺术家的内容销售收入的艺术家ID 内容ID 总和 以下是我的SQL查询:

SELECT
       artists.id AS artist, contents.id AS artist, 
       SUM(sales.revenue)AS revenue
FROM artist_sales
       INNER JOIN contents  ON sales.content_id = contents.id
       INNER JOIN artists ON   sales.artist_id = artists.id
WHERE
    sales.artist_id = artists.id AND
    sales.content_id = contents.id AND
    sales.sales_date BETWEEN '2019-01-01' AND '2019-01-31'
GROUP BY artists.id;

我得到的结果是艺术家第一内容的收入

样本数据:

艺术家桌contents table

内容表artists table

销售表sales table

1 个答案:

答案 0 :(得分:0)

如果您只想使用artist_id,则不需要JOIN

 SELECT artist_id, content_id, SUM(revenue)
 FROM artist_sales
 WHERE sales_date BETWEEN '2019-01-01' AND '2019-01-31'
 GROUP BY artist_id, content_id

 SELECT artist_id, SUM(revenue)
 FROM artist_sales
 WHERE sales_date BETWEEN '2019-01-01' AND '2019-01-31'
 GROUP BY artist_id

现在,如果您想要歌手姓名或内容名称,则需要JOIN,例如scaisEdge show