2014-10-03 57 views
-1

我有兩個表客戶端和現金。MySQL查詢,從表中總結數據

客戶表:

ID Name ... other data 
------------------------  
1 Bob 
2 Marry 
3 Tom 

cash

ID Cash Id_client_fk 
---------------------- 
1 500 1 
2 500 3 
3 500 3 
4 500 1 

我想從每個客戶綜上所述現金,即使不在表現金存在。

外鍵id_client_fkclient -> ID

回答

1

你可以使用SUM()和左連接到實現這一目標:

SELECT u.ID, u.Name, SUM(c.Cash) cash FROM client u 
LEFT JOIN cash c ON c.Id_client_fk = u.ID 
GROUP BY u.ID 

要刪除,你可以使用的NULLIF聲明:

SELECT u.ID, u.Name, SUM(IF(c.Cash > 0, c.Cash, 0)) cash FROM client u 
LEFT JOIN cash c ON c.Id_client_fk = u.ID 
GROUP BY u.ID 
0

不是很清楚了。請帶上數據的例子和你想要的結果。例如,只有幾行來理解這個想法。

如果我理解正確的話,你需要的東西是這樣的:

SELECT client.id,client.name,s.sum_c FROM client INNER JOIN (SELECT `id_client_fk`, sum(`cash_row`) sum_c FROM `cash` GROUP BY `id_client_fk`) s ON client.id=s.id_client_fk ORDER BY 3 desc limit 20;