当前位置: 首页 > 知识库问答 >
问题:

从表中获取所有记录,如果存在,则从其他表中获取与之相关的信息

施梓
2023-03-14

我有三个表(学生、组、主题)和另外两个表作为桥(弱)表来连接学生和另外两个表(学生_组、学生_主题)。大概是这样的:

+-----+----------------+     +-----+-----------+    +-----+-----------+
| id  |  student_name  |     | id  |group_name |    | id  |course_name|
+-----|---------+------|     +-----|-----------+    +-----|-----------+
|  1  |  stunet 1      |     |1    | g1        |    |1    | c1        |
|  2  |  stuent 2      |     |2    | g2        |    |2    | c2        |
|  3  |  stuent 3      |     |3    |           |    |3    |           |  
+-----+---------+------+     +-----+-----------+    +-----+-----------+

    +------------+-----------+     +------------+------------+
    | student_id |  group_id |     | stuent_id  |  course_id |
    +------------+-----------+     +------------+------------+
    | 1          |  1        |     | 1          |  2         |
    | 2          |  2        |     | 3          |  1         |
    |            |           |     +------------+------------+
    +------------+-----------+

我想要的是:显示所有的学生(阉羊他们被分配到组或没有,阉羊他们是否注册科目)与主题和组。

+-----+---------+-----------+
| student | group | deleted |
+---------|-------+---------|
|student 1| g1    |c2       |
|student 2| g2    |         | 
|student 3|       |c1       |  
+---------+-------+---------+

我之前的查询只显示了分配到某个组并注册了某个科目的学生

     select students.*       
     groups.group_name,
     modules.module_name
     from students 
     JOIN students_groups ON students.id = students_groups.student_id 
     JOIN groups ON students_groups.group_id = groups.id 
     JOIN students_modules ON students.id = students_modules.student_id 
     JOIN modules ON students_modules.module_id = groups.id 

+-----+---------+-----------+
| student | group | deleted |
+---------|-------+---------|
|student 1| g1    |c2       |
+-----+---------+-----------+

共有1个答案

宗政权
2023-03-14

使用LEFT OUTER JOIN而不是JOIN:

Select
std.studentname,
grp.groupname,
crs.coursename
FROM test.student std
LEFT OUTER JOIN test.stu_grp_brg sgb
on sgb.student_id=std.id
left outer join test.group grp
on sgb.group_id=grp.id
left outer join test.stu_course_brg scb
on scb.student_id=std.id
left outer join test.course crs
on crs.id=scb.course_id
 类似资料:
  • 问题内容: 假设有两个表: 表A 表B 表之间的联系是 messageID 字段。 我想要一个查询来生成这样的结果,在该查询中,我将所有字段从表A中拉出,并对表B中每条消息的注释数进行计数,如下所示: 我已经尝试过这样的事情: 但这是行不通的。有任何想法吗?似乎应该可以在一个查询中执行此操作。我正在使用MSSQL。谢谢你的帮助。 问题答案: 标量子查询将起作用: 与往常一样,有很多方法可以改变这只

  • 我有一个名为Trade的实体,它可以映射到包含属性的表。这个实体也有一个字段,存储来自另一个表的值。我的贸易表包含第二个表的主键。我知道如何获得整个第二个表作为实体在我的贸易实体,但我只想要1列。 如你所见,我尝试了,但是连接是在贸易实体的主密钥上执行的。我如何使用注释从贸易表中选择外键,将其连接到第二/第三表,并直接只从col2/col3中获取值?任何建议都很感激 餐桌贸易: 表2: 表3: 现

  • 我试图使用查询特定的产品类型和大小(两个diff表中的列),从以下所有表中获取数据<我无法得到想要的结果,所以一些指导将非常有用。 请在下面找到我迄今为止尝试过的细节。 PK:主键,FK:外键 以下是表结构,下面的表(提到)映射到另一个表。 实体类: 存储库: 我使用了以下查询(一个接一个),基于prod_类型和大小,我需要从所有表中获取数据。 注:尺寸不是表MC\U产品类型的一部分。数据团队已告

  • 问题内容: 我只是不明白一件事。当我输入时: 我得到: 但是选择似乎根本不起作用: 那怎么可能?我的意思是,表明存在一个名为“ db”的表… 其次,当我键入:它给我: 我能够做到: 我得到了一些结果。这是为什么?为什么我只能选择大写字母呢?而且,如何从仅以大写形式给出的表中进行选择?干杯 如果很重要:我以root用户身份登录到我的数据库。 问题答案: “ information_schema”仅具

  • 问题内容: 我有一个表 的学生 这样 我想获取所有记录,但不应重复邮政编码。因此,在上述表记录的情况下,应获取记录1和2。将不会提取第3条记录,因为它的邮政编码已在第1条记录中。 问题答案: 以下查询将仅选择不同的“ zip”字段。 以下查询将选择所有字段以及不同的zip字段。

  • 我在Android开发者网站http://developer.Android.com/training/animation/screen-slide.html上学习这个教程 我的情况是...