top 如何从基于 Mysql 的总销售额中的每个用户名 3 表中获取每个数据

我试图从 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”中循环,假设表“sales”有几个数据,表“claim”还没有数据,因为没有索赔历史.


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


拉风的咖菲猫
浏览 161回答 2
2回答

万千封印

用 left joinSELECT a.member_id,a.profile_pict, a.artist_name,        SUM(sales.amount) AS total_sales ,sum(claim_amount) as total_claimFROM artist a left join sales s on a.Artist_name=s.Artist_nameleft join claim c on c.Artist_name= a.Artist_nameGROUP BY a.member_id,a.profile_pict, a.artist_nameORDER BY total_sales DESC 注意:最好使用显式连接而不是逗号分隔连接

白衣非少年

使用外键 ID有 Artist_name 但名称可能相同。通过 id 与每个表建立关系。然后您可以使用左连接轻松获取数据
打开App,查看更多内容
随时随地看视频慕课网APP