2013-01-07 26 views
1

我有一個名爲task_assignment的表。
它具有以下6個領域命名爲:如何爲我的給定條件創建一個sql查詢?

testId,quesId,evaluatorId,studId and marks 

其實這個表用於存儲標記爲每個測試包括每個學生的問題ID明智每個評價者的痕跡。

我有testId = 1,quesId = Q1和studId = S1作爲輸入。所以,我想在給定輸入的select query.ie,Both evaluators(E1,E2)標記中得到以下信息。

sql查詢不會爲此寫入多於一行...我希望查詢輸出爲:20,15在單行中。

請指引我走出這個問題...

enter image description here

+0

我想你想使用GROUP_CONCAT ...將把所有的值放在一個單一的行... http://stackoverflow.com/questions/3664393/how-to-group-mysql-rows-with-same列值爲一行 – MacGyver

+0

我也建議重新命名你的問題,以反映你問的問題。 – MacGyver

+0

由於您添加了條件testId = 1,quesId = Q1和studId = S1,所以您的查詢沒有返回超過1的記錄。我只會給S1返回20分。和S2是有標記15 –

回答

3

我想你將無法得到你想要的輸出20, 15,因爲只有一個記錄滿足您的條件testId = 1, quesId = Q1, studId = S1

但是,爲了回答你的問題,這是我的查詢:

SELECT GROUP_CONCAT(marks) 
    FROM task_assignment 
    WHERE testId = 1 
     AND quesId = 'Q1' 
     AND studId = 'S1'; 

我已經嘗試過在SQL Fiddle

編輯1

如果要分析你的C#代碼查詢的輸出將它們存儲在不同的變量,你可以使用Split功能:

string marks = "20, 15"; //Suppose that this value came from database 

int mark1 = Convert.ToInt32(marks.Split(',')[0]); 
int mark2 = Convert.ToInt32(marks.Split(',')[1]); 

的代碼仍然容易出錯,具體取決於marks變量的值,只要確保已驗證該值。

這可能與問題無關,但仍然可以幫助您完成任務,這是我的答案。

+1

+1爲SQL小提琴不知道它,我認爲它是一個偉大的網站! – domiSchenk

+1

@Kael:謝謝,我已經重新上傳圖片... – Saravanan

+0

@KaeL:請問如何解析由GROUP_CONTACT(標記)返回的值? – Saravanan