我无法正确制定 MySQL 查询。我尝试过的一切都没有给我需要的东西,或者给出了语法错误。
我有三个表:Clients、Courses 和 CoursesForClients。
客户表只有一个人的基本坐标:ID、姓名、地址、电子邮件等。
+----------+-----------------------------+------+
| ClientID | Name | Address | etc. |
+----------+-----------------------------+------+
| 10 | Joe Smith | 1 Main St. | ... |
| 20 | Bob Smith | 2 Main St. | ... |
| ... | ... ... | ... ... ... | ... |
+----------+-----------------------------+------+
Courses 表存储课程名称及其 ID。
+----------+-----------------------+
| CourseID | Name |
+----------+-----------------------+
| 100 | Intro. to Subject |
| 200 | Intermediate Subject |
| 300 | Advanced Subject |
| ... | ... ... ... ... |
+----------+-----------------------+
CoursesForClients 表具有 CourseID 和 ClientID。给定的客户可以学习多门课程,因此对于客户所学习的每门课程,都有一行,其中包含人员 ID 和课程 ID。
+----------+----------+
| CourseID | ClientID |
+----------+----------+
| 100 | 1 |
| 200 | 1 |
| 300 | 1 |
| 100 | 2 |
| 200 | 2 |
| ... | ... |
+----------+----------+
现在,我需要的是能够列出客户 - 只需一次 - 以及她参加的所有课程。因此,查询的结果可能如下所示:
10:Joe Smith
1 Main St.
Somewhere, AL
Intro. to Subject
Intermediate Subject
Advanced Subject
---------------------------
20:Bob Smith
2 Main St.
Somewhere, AL
Intro. to Subject
Intermediate Subject
所以这个输出反映了客户和课程之间的关系。这里的关键是,无论客户参加了多少课程,客户的详细信息只会出现一次,然后是她参加的所有课程的列表。
还有一个额外的变化是,还有另一个表列出了客户课程的成绩,并且 GradeID 也存储在 CoursesForClients 表中,还有另一个成绩表,带有 ID 和成绩描述。但我现在不会担心这个。现在,我想要的只是显示的基本输出,如上所述。
看起来应该很容易为此设置查询,使用 JOIN 和可能的 GROUP BY,但我在这里遇到了一个障碍,似乎无法正确处理。因此,任何帮助将不胜感激。谢谢!