我有與PHP和MySQL的一些querys問題總結: 我有共同的一個場2個不同的表:Mysql的計數和來自兩個不同的表
表1
ID |點擊| num_g |貓| usr_id | active
1 | 10 | 11 | 1 | 53 | 1
2 | 13 | 16 | 3 | 53 | 1
1 | 10 | 22 | 1 | 22 | 1
1 | 10 | 21 | 3 | 22 | 1
1 | 2 | 6 | 2 | 11 | 1
1 | 11 | 1 | 1 | 11 | 1
表2
ID | usr_id |分
1 | 53 | 300
現在我用這個語句只是全部從表1中的每個ID數+ 1太
SELECT usr_id, COUNT(id) + SUM(num_g + hits) AS tot_h FROM table1 WHERE usr_id!='0' GROUP BY usr_id ASC LIMIT 0 , 15
總結和我得到的總對每個usr_id
usr_id | tot_h |
53 | 50
22 | 63
11 | 20
直到這裏一切正常,現在我有加分(表2) 我嘗試這第二個表:
SELECT usr_id, COUNT(id) + SUM(num_g + hits) + (SELECT points FROM table2 WHERE usr_id != '0') AS tot_h FROM table1 WHERE usr_id != '0' GROUP BY usr_id ASC LIMIT 0 , 15
但似乎總結了300多分給所有用戶:
usr_id | tot_h |
53 | 350
22 | 363
11 | 320
現在我怎麼能得到像第一次嘗試的總數,但在一個聲明+ secon表?因爲現在我在第二張表中只有一個條目,但我可以在那裏。 感謝您的所有幫助。
喜托馬斯感謝您的回覆,我想這是在正確的方向,但我越來越weirds結果,如
usr_id | tot_h
22 | NULL < ==我認爲null它是因爲usr_id在表2中沒有值
53 | 1033
它就像第二個用戶正在獲取所有的值。然後我試試這個:
SELECT table1.usr_id, COUNT(table1.id) + SUM(table1.num_g + table1.hits + table2.points) AS tot_h
FROM table1
LEFT JOIN table2 ON table2.usr_id = table1.usr_id
WHERE table1.usr_id != '0'
AND table2.usr_id = table1.usr_id
GROUP BY table1.usr_id ASC
同樣的結果,我只是得到所有值的總和,而不是由每一個用戶,我需要這樣的結果:
usr_id | tot_h
53 | 53 < ====加上表1上的300點
22 | 56個< ====加上表2
/////////結果,我需要////////////
usr_id 100分| tot_h
53 | 353 < ====加上表2上的300點
22 | 156個< ====加上對錶2的100分
我認爲結構必須是這樣的 僞陳述;)
從表1統計所有ID來獲得,其中usr_id然後記錄的數sum hit + num_g並從table2中選擇usr_id與table1相同的額外點並獲得結果:
usr_id | tot_h
53 | 353
22 | 156