Мне нужна помощь в написании SQL для объединения 3 таблиц - PullRequest
0 голосов
/ 27 июня 2019

Я вижу, что здесь есть несколько разных тем о соединениях SQL с тремя таблицами. У меня немного другая проблема, которая доставляет мне неприятности. Это может быть проблема дизайна БД или, может быть, я не правильно использую соединение? У меня три стола

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

в моей базе данных я хочу получить идентификатор исполнителя , идентификатор содержимого и сумма выручки от продаж содержания каждого исполнителя ниже мой 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 голосов
/ 27 июня 2019

Для запуска, если вы хотите только 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...