Как лучше получить данные из каждой таблицы с именем пользователя 3 в Mysql на основе общих продаж - PullRequest
0 голосов
/ 07 мая 2019

Я пытаюсь получить данные из 3 таблиц, а именно: «художник», «продажи», «претензии»

Поэтому я хочу попытаться получить доход каждого «художника» (от общих продаж)") и если они заявили о некоторых продажах, то есть эти данные сохраняются в таблицах" претензий "

А вот структура каждой таблицы:

*Table Artist:
Artist_id
Artist_name
Artist_profile
*Table Sales :
Sales_id
Artist_name
Sales_amount
*Tables Claim :
Claim_id
Artist_name
Claim_amount

Я пробовалнекоторые запросы не получили то, что я ожидал, некоторые значения циклически повторяются в столбце «Claim_amount», скажем, в таблице «продажи» есть несколько данных, а в таблице «заявки» еще нет данных, потому что нет истории заявок.

SELECT artist.member_id,artist.profile_pict, sales.artist_name, 
       SUM(sales.amount) AS total_sales ,claim.claim_amount

FROM sales,artist,claim

WHERE sales.artist_name OR claim.artist_name = artist.username

   GROUP BY sales.artist_name
   ORDER BY total_sales DESC 

Я ожидаю, что результат будет похож на пример:

Artis_id | Artist_profile | Artist_name  | Total_amount | Total_claim
1          Artist A         My Artist 1    100            50
2          Artist B         My Artist 2    200            null (because there is no history)
3          Artist C         My Artist 3    300            150

Ответы [ 2 ]

0 голосов
/ 07 мая 2019

использовать идентификатор внешнего ключа

есть Artist_name, но имя может быть таким же.установить связь с каждой таблицей по id.

, тогда вы можете легко получить данные, используя левое соединение

0 голосов
/ 07 мая 2019

Использование left join

SELECT a.member_id,a.profile_pict, a.artist_name, 
       SUM(sales.amount) AS total_sales ,sum(claim_amount) as total_claim
FROM artist a left join sales s on a.Artist_name=s.Artist_name
left join claim c on c.Artist_name= a.Artist_name
GROUP BY a.member_id,a.profile_pict, a.artist_name
ORDER BY total_sales DESC 

ПРИМЕЧАНИЕ: всегда лучше использовать явное соединение, а не соединение через запятую

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