2017-06-30 8 views
1

を次の例では、デモンストレーションのために、私はLEFT JOINは - リストのすべてのchefe売り手とその販売と価値

tab_sellers販売者あたりの販売額の合計を取得:

id_seller | seller | chefe 
    1   John  bart 
    2   Marie bart 
    3   Jamie lucas 
    4   Arnold lucas 
    5   peter Homer 

tab_sales:

id | sales | seller | value 
1  BMW  1  100 
2  FORD  1  200 
3  FIAT  2  300 
4  FORD  2  400 
5  FORD  3  400 

私は売上を数え、次のクエリで計算します:

SELECT tsl.sellers, 
     SUM(ifnull(ts.value,0)) AS value_sales, 
     COUNT(ts.sales) AS sales_number 
FROM tab_sellers tsl 
LEFT JOIN tab_sales ts ON tsl.id_seller = ts.seller 
GROUP BY tsl.seller 

問題は、各chefe(テーブルはtab_sellersの例に基づいて構築されており、私はそれを変更することはできません)に関連して、売上と値の合計を取得する必要があることです。

期待される成果:

chefe | sales | value 
bart  4  1000 
lucas 1  400 
homer 0  0 

答えて

2

あなたは

は各chefe

との関係での販売と値の合計を取得したいだけの場合は、正しい方向にありました使用してくださいgroup by tab_sellers.chefe

select tab_sellers.chefe, count(tab_sales.sales) as sales , coalesce(sum(tab_sales.value), 0) as summ 
from tab_sellers 
left join tab_sales 
on tab_sellers.id_seller = tab_sales.seller 
group by tab_sellers.chefe 
order by summ desc 
+0

おかげDimglodとOtoShavadze。私は私のクエリでこのソリューションを実装しようとします – josei

1

問題ありません、代わりに、売り手のchefeでわずかグループ:

SELECT tsl.chefe, 
     SUM(ifnull(ts.value,0)) AS value_sales, 
     COUNT(ts.sales) AS sales_number 
FROM tab_sellers tsl 
LEFT JOIN tab_sales ts ON tsl.id_seller = ts.seller 
GROUP BY tsl.chefe 
関連する問題