假设我有一个数据库,我有一个表主题,其中包含 idSubject 和主题,因为它的列都是varchar的长度为20, idSubject 是自动增量。所有id都是自动增量。
然后我有另一个名为单位的表。现在单位有 idUnit (int),评估(varchar), learnUnit (varchar),百分比(int)和 dueDate (日期)。
主题表作为一对多连接到单元表。
我不断向某个主题添加更多单元,但是当我想要更改为另一个主题时,我如何能够只显示为一个主题收集的所有信息?
这背后的逻辑是我不明白的。我如何进行SQL查询以查找一个主题的所有信息?
答案 0 :(得分:1)
您可以在包含idsubject
的单位表格中创建一列。因此,此列的许多行将具有相同的值,这对应于相应的idsubject
。
你将如何做到这一点?容易。
在插入过程中,还要在单元表中插入idsubject
。这将让您了解您必须处理的主题。现在,在sql中有一个名为group by
的选项,它可以帮助您过滤相同主题的单位。
SELECT idSubjects, commands(column_name(s))
FROM Unit
GROUP BY idSubject;
或
SELECT column_name(s)
FROM Unit
Where idSubject operator value;
所以,这就是你如何使用这两个表:一个只有主题,另一个包含所有这些主题的所有单位。
答案 1 :(得分:0)
通常,如何解决这个问题,就是创建第三个表,在该表中创建单元和主体之间的连接。您可以像之前所说的那样,在idSubject上添加引用列,但是创建名为“UnitsToSubject”的第三个表是一种更清晰,更舒适的方法。
在那里你可能有三列,如:
“ID”:用于引用内部表“UnitsToSubject”。
“SubjectID”:主题的ID。
“UnitID”:您单位的ID。
通过这种方式,您可以轻松更改主题和单位之间的联系。