所以我有这个数据库,其中包含一个文件列表。文件可以更新,但在回滚的情况下仍然保留以前的版本。我想知道的是如何添加一个临时列,其中包含该文件以前版本的数量。
基本上,我如何在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将是我们上传的提交类型的分配。因此,例如,第三个测验将具有submission_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,y然后我想计算相同点出现在表中的次数。因此,点(1,赋值)出现两次,因此计数为2。
答案 0 :(得分:1)
你不需要另外一张桌子就可以做到这一点。只需使用GROUP BY
编写查询。
SELECT submission_number, submission_type, COUNT(file_id) FROM Files GROUP BY submission_number, submission_type;