如果其他表中的字段不为空,如何从其他表中选择字段?

塔赫尔·迈赫迪

我目前被要求进行查询,如果它们不为空,则将从其他表中获取字段名称!
假设我们有这样的表格:

学生

ID 姓名 年龄
1 迈赫迪 22
1 阿米娜 26

数学

ID 部分
1 代数
2 分析
3 几何学

英语

ID 部分
1 语法
2 请讲
3 词汇

考试

idStudent idMath id英语
1 1 空值
1 空值 2
2 1 空值

我们要查询使这个预期的结果:

考试

idStudent 主题
1 代数
1 请讲
2 代数

到目前为止我已经尝试过:


select idStudent,m.section Subject 
from Exam exam, Student s, Math m, English eng
where s.id = exam.idStudent 
and m.id=exam.idMath 
and exam.idEnglish is null
union
select idStudent,eng.section Subject 
from Exam exam, Student s, Math m, English eng
where s.id = exam.idStudent 
and eng.id=exam.idEnglish 
and exam.idMath is null

有没有更好的方法来做到这一点!

在此先感谢您的帮助。

穿刺者

数据库模型远非理想,因为它每门课程使用一张表;这意味着每次添加课程时,都需要创建一个新表。一个典型的模型将包括所有课程的单个表。

无论如何,在你的情况下,你可以这样做:

select e.idstudent, c.section from exam e join math c on c.id = e.idmath
union all
select e.idstudent, c.section from exam e join english c on c.id = e.idenglish

另外,请使用现代连接语法而不是 1980 年代的连接语法,因为它更易于阅读和调试。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何根据不同条件从其他表中选择字段

如何从其他表 Laravel 中选择字段

SQL选择-如果为空,如何从其他表中选择

如果其他表指向记录,则从表中选择

在Rails中如何从多个表中选择其他列

从其他表中获取其他字段

如何显示其他表中是否存在字段?

如何根据其他表中的其他关系从 1 列中选择 2 个数据

如果值存在,则从其他表中选择

访问-如果语句从其他表中选择值

如果它不为空,如何通过插入其他列的文本和值的组合来更新mysql表中的列?

如何从具有其他表条件的表中选择

从表中选择记录,不在其他表中

从另一个表中选择其他字段

如果满足其他字段的值,则在完整表中设置字段的值

用mySQL中的其他表选择结果更新表中的字段

SQL:从其他表中选择

其他字段的字段验证不为null

SQL-如何从其他表中选择信息

如果在一个表中为null,则从“其他”中选择

jQuery验证调用自定义方法(如果其他字段不为空)

如何在Lookup ax2012中选择名称(或其他字段)而不是ID

在迭代时从其他表传递字段

如果数据为空,则显示其他字段中的其他数据

如果其他任何列字段发生更改,如何从具有相同主键的两个表中取回记录

选择左联接中的行取决于其他表中字段的总和?

如何使用其他表中的列/字段对PostgreSQL表进行集群

Bigquery-如果其他字段为空,则替换字段

从表中删除所有其他字段