2

我在下面有三个表格,显示了学生记录、科目和有科目的学生。

我想问一下什么是有效的 SQL 查询来显示下面的结果。我可以使用 JOIN 显示它,但不能使用下面的格式。

+------+------------+-----------+-----+---------+- ----------+--------+
| 姓名 | 地址 | 电话 | 性别 | 科目 | 老师 | 活跃 |
+------+------------+-----------+-----+---------+- ----------+--------+
| 约翰 | 某处| 12345 | 中号 | | 老师1 | 是 |
| 约翰 | 某处| 12345 | 中号 | 数学 | | 是 |
| 约翰 | 某处| 12345 | 中号 | 科学 | | 是 |
| 约翰 | 某处| 12345 | 中号 | 英语 | | 是 |
| 马特 | 某处| 123456 | 中号 | | 老师2 | 是 |
| 马特 | 某处| 23456 | 中号 | 数学 | | 是 |
| 马特 | 某处| 123456 | 中号 | 科学 | | 是 |
| 女孩 | 某处| 5431 | F | | 老师3 | 是 |
| 女孩 | 某处| 5431 | F | 物理学 | | 是 |
| 女孩 | 某处| 5431 | F | 数学 | | 是 |
+------+------------+-----------+-----+---------+- ----------+--------+

从 student_record 中选择 *;
+------------+------+-----------------+------------ +-----+----------+--------+
| id_student | 姓名 | 地址 | 电话 | 性别 | 老师 | 活跃 |
+------------+------+-----------------+------------ +-----+----------+--------+
| 1 | 约翰 | 某处 | 12345 | 中号 | 老师 | 0 |
| 2 | 马特 | 某处| 12345222 | 中号 | 老师1 | 0 |
| 3 | 女孩 | 这里某处| 第3333章 F | 老师2 | 0 |
+------------+------+-----------------+------------ +-----+----------+--------+

从主题中选择 *;
+------------+--------------+---------- +
| id_subject | 主题名 | 主题描述 |
+------------+--------------+---------- +
| 1 | 数学 | 数学 |
| 2 | 科学 | 科学 |
| 3 | 英语 | 英语 |
| 4 | 物理学 | 物理学 |
+------------+--------------+---------- +

从 with_subjects 中选择 *;
+--------------------+--------------------+-------- -----+
| id_student_subject | student_id_subject | 学生ID |
+--------------------+--------------------+-------- -----+
| 1 | 1 | 1 |
| 2 | 2 | 1 |
| 3 | 3 | 1 |
| 4 | 4 | 1 |
| 5 | 4 | 2 |
| 6 | 3 | 2 |
| 8 | 1 | 2 |
| 9 | 1 | 3 |
| 10 | 2 | 3 |
| 11 | 3 | 3 |
| 12 | 4 | 3 |
+--------------------+--------------------+-------- -----+
4

1 回答 1

1

怎么样

选择 a.name 作为“姓名”,a.address 作为“地址”,a.telephone 作为“电话”,a.sex 作为“性别”,null 作为“主题”,a.teacher 作为“教师”,a.active作为学生记录中的“活动”作为联合 a.name 作为“姓名”,a.address 作为“地址”,a.telephone 作为“电话”,a.sex 作为“性别”,b.subject_name 作为“主题”,null as "Teacher",a.active as "Active" from (student_record as a inner join with_subjects as c on a.id_student = c.student_id) inner join subject as b on c.student_id_subject = b.id_subject

没有测试它。它的顺序与您的示例相同,但应该包含所有数据

于 2012-09-25T11:30:24.703 回答