2014-10-28 60 views
0

Rails的版本:[鋼軌] [SQL]查詢得到的總和唯一值

@most_valueable_clients = current_user.clients.find_by_sql("SELECT vorname, nachname, preis FROM clients INNER JOIN treatments on treatments.client_id=clients.id") 

SQL版本:

SELECT vorname, nachname, preis FROM clients INNER JOIN treatments on treatments.client_id=clients.id WHERE user_id=1; 

產生這一個表:

vorname | nachname | preis 
------------+--------------+------- 
hallo test | in ?   | 500 
hallo test | in ?   | 87 
ljkjölk | lkjöljkölkjö | 50 
kevin  | marcel  | 50 
Hans  | bla   | 50 
Hans  | bla   | 100 

我可以使用distinct來篩選唯一值。 如何爲每個用戶創建一個每個preis(意味着數量)總和的子查詢? 我需要總結價格的獨特價值。

預期的結果:

與總結PREIS(量)的唯一客戶。

有什麼建議嗎?

+0

你想要做的是在SQL中使用'group by'。對於Rails,試試這個:'current_user.clients.includes(:treatments).group(:vorname,:nachname).sum(:preis)'。目前我無法測試此功能,但使用組的基本原則正是您所需要的。 – nikkon226 2014-10-28 14:00:37

+0

@ nikkon226您能否請創建一個答案,以便我可以接受它? – 2014-10-28 14:07:17

回答

2

很高興這個工作對你:


你想要做的是使用組由SQL。對於Rails,試試這個:

current_user.clients.includes(:treatments).group(:vorname, :nachname).sum(:preis) 
+0

謝謝先生! – 2014-10-28 14:09:59

0

就試試這個:

current_user.clients.find_by_sql("SELECT vorname, nachname, sum(preis) 
FROM clients INNER JOIN treatments on treatments.client_id=clients.id 
GROUP BY vorname, nachname") 
+0

謝謝,這是行不通的得到了以下輸出:undefined方法'preis'爲# 2014-10-28 14:07:41

+0

我同意nikkon226 +1 – 2014-10-28 14:23:58