2013-07-29 32 views
0

這裏是我的數據庫結構mysql的選擇一定的信息和統計

id, user_id, veh_id, amount 
1, 2, 3, 123 
2, 2, 4, 125 
3, 1, 3, 122 
4, 1, 4, 126 

我試圖讓一個SELECT來計算每個的user_id一次數量爲每個veh_id量。如果用戶在veh_id上沒有金額,我想爲此顯示0。

我正在考慮使用SUM(IF()),但我不知道該怎麼做才能通過user_id將它們放在一個漂亮的表中。

這裏是我到目前爲止

SELECT user_id, SUM(IF(user_id !=0, 1, 0)) AS COUNT 
FROM TABLE 
GROUP BY user_id 

我是我在正確的軌道上得到我想要

這裏是我的修訂問題,與resutl beeing接近我想要的是什麼:

我能有一個方法來計算時間的號碼的用戶是在veh_id 出價最高的人因此,如果在30輛汽車的用戶競標價格,我可以看出,他是12次出價最高的人

+0

「爲每個user_id計算它作爲每個veh_id的數量的時間數」是什麼意思? – fthiella

+0

這是一個拍賣系統,這是我存儲用戶出價信息的表格。每個用戶都可以在每個veh_id上出價,我想知道每個用戶有多少輛車投標。因此,對於用戶X,他例如對41輛車中的26輛進行出價。我願意擁有2個號碼,用戶Y可以在55個人中的33個出價,他被允許查看。這將剩下加入其他表格以獲得日期 – maphaneuf

+0

因此,我假設你有一個車輛表,你是這樣的,你有一些手段,你可以瞭解哪些車輛的用戶沒有? –

回答

0

爲了得到count = 0的情況,您需要有一個車輛表,您可以將其與該表相關聯。沒有這個,你就沒有明確的方法來理解可能的車輛是什麼。我還假設你有一張用戶表,如果沒有這個表,你不知道整個宇宙用戶。你需要加入這三個表格才能得到答案。

在這個例子中我將假定表名是用戶,users_vehicles,車輛

SELECT u.user_id, v.vehicle_id, COUNT(uv.id) 
FROM users AS u 
LEFT JOIN users_vehicles AS uv 
    ON u.user_id = uv.user_id 
RIGHT JOIN vehicles AS v 
    ON uv.veh_id = v.veh_id 
GROUP BY u.user_id, v.vehicle_id 

注意usersusers_vehicles之間的LEFT JOIN將包括所有user_id值,即使user_id中不存在users_vehicles。同樣,users_vehiclesvehicles之間的RIGHT JOIN將包括所有veh_id值,即使它們不存在於user_vehicles中。

+0

這是我真正的SELECT語句:SELECT ep.dealer_name,SUM(IF(eb.user_id!= 0,1,0))AS Tentative,COUNT(e.id) FROM #__ezautos_bids AS eb LEFT JOIN #__ezautos_profile AS ep ON ep.mid = eb.user_id LEFT JOIN #__ezautos AS e ON e.id = eb.veh_id WHERE e.listdate BETWEEN'2013-07-01'AND'2013-07-31' GROUP BY ep .dealer_name – maphaneuf

+0

總數和次數給我相同的數字。我想要有兩個不同的數字:我投標汽車的次數和我沒有的次數。 – maphaneuf

+0

也許,如果我甚至想要0,會更簡單。所以如果用戶沒有出價,我得到0作爲總和,因此我不需要知道用戶didi沒有出價多少次。 – maphaneuf