2015-12-21 34 views
0

客戶正在尋找一個點數系統在她的網站上實施,我很難根據收集的點數顯示用戶,我希望有人可能能夠幫助我,並指出我正確的方向,讓這段代碼正常工作。從一個表格中選擇數據,安排另一個數據總和

我從​​選擇所有數據和代碼,我也試圖從ap_points選擇所有數據,雖然我不要求無論從表中的所有數據,是具體的,我只需要:

ap_users: 
    user_id 
    first_name 
    last_name 
    display_img 
    hub_access 

ap_points: 
    user_id 
    points_added 

我認爲選擇所有數據可能是最簡單的路線,會讓你決定。

我試圖選擇並顯示所有用戶,其中hub_access = '1'和排序總數爲points_added最高。點按行分開添加,需要加起來(這就是爲什麼我有sum函數)。

$sql = "SELECT * FROM `ap_users`, `ap_points` WHERE `hub_access` = '1' ORDER BY sum(points_added) DESC"; 

我也試圖將其配置爲像特定表:

ap_users.hub_accessORDER BY sum(ap_points.points_added)但這些也不能工作。

此當前代碼不顯示任何結果或顯示沒有錯誤的單個結果?我不確定我是否需要使用某種Group By函數來連接兩個表中的user_id?

+0

你有這些表中的記錄嗎?從ap_users a中選擇a.user_id,a.first_name,a.last_name,a.display_img,sum(b.points_added)total_points,ap_points b 其中a.hub_access = 1 group by a.user_id order by sum(b。 points_added) –

+0

是的,如果我編輯SQL是簡單的,它確實顯示記錄,它確實顯示記錄,只有當我嘗試訂購它們時。如果你有'sum(b.points_added)total_points'應該是那樣的,或者它應該是sum(b.points_added)total_points'? – Snappysites

+0

用'as'試試。我不熟悉MySQL語法。 –

回答

0

SUM是一個聚合函數。如果您想爲每個user_id添加總和,則應該按user_id進行分組。

喜歡的東西

SELECT *, sum(points_added) as sum_points FROM app_users 
JOIN app_points ON app_users.user_id = app_points.user_id 
WHERE `hub_access` = '1' 
GROUP BY app_users.user_id 
ORDER BY sum_points; 

我沒有測試過該查詢,但應該給你的解決方案的想法。

+0

第一次工作沒有問題。你先生,是救命恩人!非常感謝您的幫助和提供有關該主題的更多知識。 – Snappysites

相關問題