2016-07-11 44 views
0

所以我有這個數據庫,其中包含一個文件列表。文件可以更新,但以前的版本仍然保留在回滾的情況下。我想知道的是,我將如何添加一個包含該文件以前版本數的臨時列。在mysql中添加一個臨時列,其條目是表中相同條目的計數

本質上,我將如何在mysql中創建一個臨時列,其條目取決於主表中的某些內容?

CREATE TABLE Files(
    file_id INTEGER PRIMARY KEY NOT NULL AUTO_INCREMENT, 
    student_id INTEGER, 
    group_id INTEGER, 
    submission_number INTEGER, 
    submission_type VARCHAR(10), 
    FOREIGN KEY (student_id) REFERENCES Student (student_id) ON DELETE CASCADE, 
    FOREIGN KEY (group_id) REFERENCES Groups(group_id)ON DELETE CASCADE 
); 

提交由它的submission_number和submission_type定義。所以submission_type 0將是一個任務,1將是一個項目,2將是一個測驗等。 submission_number將是我們正在上傳的那種提交類型的分配。例如,第三個測驗的submit_type = 2和submission_number = 3.我們可以更新一個文件,因此我們可以上傳一個具有相同submission_type和submission_number的新文件。我想要返回的是包含每次提交上傳次數的表格。

所以,如果我下面的表格

+---------+------------+----------+-------------------+-----------------+ 
| file_id | student_id | group_id | submission_number | submission_type | 
+---------+------------+----------+-------------------+-----------------+ 
|  1 |  10049 |  1 |     1 | assignment | 
|  2 |  10032 |  1 |     1 | assingment | 
|  3 |  10032 |  1 |     2 | quiz   | 
|  4 |  10032 |  1 |     3 | assingment | 
+---------+------------+----------+-------------------+-----------------+ 

我希望回到表

+-------------------+-----------------+-------+ 
| submission_number | submission_type | count | 
+-------------------+-----------------+-------+ 
|     1 |  assignment | 2 | 
|     2 |  quiz  | 1 | 
|     3 |  assignment | 1 | 
+-------------------+-----------------+-------+ 

另一種方式去思考它了,如果submission_number和submission_type是不是座標,例如x,然後我想計算同一個點出現在表中的次數。因此,點(1,作業)出現了兩次,因此計數爲2.

+0

你要根據每個提交數計? –

+0

計數取決於上傳具有相同submission_number和submission_type的提交的次數。將submission_number和submission_type看作(x,y)。我們有多少次同樣的觀點出現在這張表中。 –

+0

可以同一提交號碼有兩種不同的提交類型?像在你的表file_id 2可以submission_type不是1?那麼結果應該是什麼? –

回答

1

您不需要另一個表格就可以做到這一點。只需使用GROUP BY編寫查詢。

SELECT submission_number, submission_type, COUNT(file_id) FROM Files GROUP BY submission_number, submission_type; 

working demo

+0

哦,非常感謝你!幾天前我第一次開始使用SQL, –

+0

歡迎:)並且讓我知道如果您有任何關於此問題的更多查詢。 –

相關問題