2009-06-16 44 views
0

我問一個question yesterday,我得到的答覆已經回答了我的問題的第一部分 - 我現在有一個生成類似於此列表的查詢:PHP目錄到表

fname, sname, uname, assignment, task, grade 
joe, blogs, joe.blogs, 1, 1, 52 
joe, blogs, joe.blogs, 1, 2, 58 
jim, blogs, jim.blogs, 1, 1, 95 
jim, blogs, jim.blogs, 1, 2, 86 
amy, blogs, amy.blogs, 1, 1, NULL 
amy, blogs, amy.blogs, 1, 2, 76 

的等等。它從列表中取得最近的成績,並且仍然在學生沒有收到任務成績的情況下工作。

我想接下來就是產生一個表,看起來與此類似:再次

 | Assignment 1 | Assignment 2 | 
Name |-----------------|-----------------| 
     | Task 1 | Task 2 | Task 1 | Task 2 | 
=========================================== 
Joe.. | 52 | 58 | .. | .. | 
Jim.. | 95 | 86 | .. | .. | 
Amy.. | U  | 76 | .. | .. | 
... 

,我以前做過類似的事情,但我知道他們是效率極其低下的 - 在理想情況下,我想能夠通過一次數組來產生這張表。

+0

可以假定你的列表/數組將按名稱,賦值,任務進行排序,並且所有不存在的值都將返回NULL,ala Amy的Assignment 1 - Task 1賦值? – tschaible 2009-06-16 10:41:01

回答

1

你需要做的是在遍歷行時迭代列。這可能是有效的,以第一次執行一個小的查詢,選擇列:

SELECT 
    * 
FROM assignment_tasks 
ORDER BY 
    Assignment_ID ASC, 
    Task_ID ASC; 

然後適應查詢加載您所描述的用戶,分配,任務訂購陣列。 這樣,數組中的值與表中的順序相同(逐行,從左到右)。如果缺少一個值(或NULL,無關緊要),則打印U.

當然,這與假設分配和任務的數量與數組中的條目數量相比很小。

1

看看group by條款。我個人不使用它,因爲我發現我仍然需要結果集foreach來創建一個像我想要的嵌套數組 - 但它可能是你正在尋找的。這裏有一個link that uses sums,所以它不是很理想,但它會告訴你更多有關SQL的信息。