2015-12-30 39 views
1

海蘭我有2個表
一,應用
id | name | status
====================
1 | morvick | complete
2 | siti | prosess
3 | boby | complete
`如何獲取和每一行的MySQL

2.application_test
id | application_id | test_id | result
======================================
1 | 1 | 1 | 70
2 | 1 | 2 | 80
3 | 1 | 3 | 90
4 | 2 | 1 | 60
5 | 2 | 2 | 80
6 | 2 | 3 | 70
7 | 3 | 1 | 90
8 | 3 | 2 | 70
9 | 3 | 3 | 60
10| 3 | 4 | 80
我的問題是:
==================
1.我怎麼能得到每個test_id的總和(結果)在哪裏狀態完成
2.我怎麼能得到總和(每個爲test_id結果),其中狀態prosess

例如是這樣的:
test_id | SUM(result = complete) | SUM(result = proses) |
1 | 90 | 50
2 | 80 | 40
3 | 90 | 60
4 | 80 | 70

+1

你有什麼已經嘗試過想要得到的結果

SELECT test_id , SUM (result) FROM application a JOIN application_test t ON t.test_id = a.id WHERE a.status = 'complete' GROUP BY test_id SELECT test_id , SUM (result) FROM application a JOIN application_test t ON t.test_id = a.id WHERE a.status = 'prosess' GROUP BY test_id 

的總和?您是否在尋找將SQL查詢,PHP代碼或Laravel模型與查詢一起編寫? –

回答

1

嘗試下面的query

SELECT test_id, 
SUM(IF(app.status='complete',apt.result,0)) AS complete_sum, 
SUM(IF(app.status='process',apt.result,0)) AS process_sum 
FROM application_test AS apt 
JOIN application AS app ON app.id=apt.application_id 
GROUP BY apt.test_id 
+0

請解釋你如何實現這一點。以及這個查詢背後的邏輯是什麼。 –

+0

hy zafar馬利克,什麼意思** apt.result,0 **,因爲如果我改變爲app.status,0它是deffrent結果感謝 – b4dQuetions

+0

在一列你只需要結果狀態是完整的,所以查詢作出結果0爲該列中的其他狀態... plz讓我知道你是否沒有得到想要的結果。 –

1

你可以試試兩個查詢,如果你在一個查詢

SELECT test_id, 
SUM(IF(a.status='complete',result,0)) Completed , 
SUM(IF(a.status='process',result,0)) Process 
FROM application a 
JOIN application_test t 
ON a.id=t.application_id 
GROUP BY t.test_id 
+0

Hy,Vipin耆那教,我認爲這不工作,因爲**字段導致表application_tes不在表申請人** – b4dQuetions

+0

對不起,我錯誤地寫我很快。它會t.result。 –