查询多个表MySQL

时间:2012-12-07 01:12:26

标签: php mysql sql join

我使用MySQL并尝试为我的学校项目编写PHP脚本。

有一个名为课程的表包含以下列:

-id
-lessonid.
-studentid

我还有两个不同的表格用于注释和公告 公告和注释表包含以下列:

-id
-lessonid
-content
-createdtime

我需要按创建时间订购最新到最旧的公告和备注,但还需要显示学生所需的所有课程。

例如:学生参加数学和物理课程。我需要显示他/她关于物理和数学的注释和公告,所有项目都应按日期排序。 (就像时间表一样。)当然,我不会向他/她展示化学课的笔记和公告。如果我可以说它是列表中的注释或公告,那也很好。

你能帮我写一下SQL和PHP代码吗? 感谢。

编辑:这是我陷入困境的地方: 我合并了两张桌子并按日期排序。但不能将它们与学生的课程结合起来。

SELECT title, created, lessonid FROM (SELECT title, created, lessonid FROM notes UNION SELECT title, created, lessonid FROM announcements) as a ORDER BY created DESC 

2 个答案:

答案 0 :(得分:0)

首先,感谢让我们知道这是针对学校项目的 - 所以我不会给你答案。如果它在项目中,那么你的老师应该给你提出解决方案的概念。

你的问题很好,我可以看到如何解决它但是......这是你的项目,所以你需要对它进行破解并发布你想出的结果。

我会给你一些提示,让你开始。

您需要一个查询来组合公告和备注表。然后,您需要按课程对数据进行分组并将其加入学生。这都是基本的SQL。

祝你好运。发布你的想法。

答案 1 :(得分:0)

我也会跟随海报的建议,而不是为你做腿谱。但是不会让你空手而归,所以会给你这个概念。 有一个称为第三范式的东西,我们根据这个概念决定了多少个表,所以如果它是一个大数据库,那么将名字分开并分隔姓氏,因为很多人彼此分享这些,所以节省了空间和冗余因此,一个人的表有personid作为主要,并且具有姓氏外键来引用姓氏表,我们通常将其命名为lastNameRef,类似于firstNameRef。现在,每个人都有很多课程,每个班级都有很多人(学生)。所以这是一个很多关系 - 我们创建一个allreference表来解决这个问题。所以有一个表的类具有类id作为主键,所以现在你创建一个所有的引用表,其中recordId作为主键,(仅用于同名)和personRef(在person表中引用personId)和classref(引用classId)在类表中)如果一个人有两个类,另一个具有相同personId但不同类ID的条目,最后,您可以从person表中查询person的名称,从类表中查询类的名称,并在其外键上创建连接但是使用所有三个表,结果是(JOHN MATH,JOHN SCIENCE)等,同样地显示john在人员表中搜索名称的所有注释,以及在类表中的主题和注释表中的注释