目录

  • 查询至少选了1班2号同学所选课的所有同学班号、学号
    • 1.元组演算
      • 关系图形表示
      • 关系演算
    • 2.元组演算转换成没有∀\forall∀符号的语句
    • 3.sql语句

查询至少选了1班2号同学所选课的所有同学班号、学号

这类问题应该是本学期数据库查询里比较难的题了,涉及到了exists的使用,但是搞清楚原理还是很简单的。

假设有学生选课表sc(sclass,sno,cno),其他属性忽略不计

1.元组演算

关系图形表示

以下的四张表均为sc表,他们的关联关系如下
u同学是我们要找的同学,v是u同学选修课程,w是1班2号同学所选的课程

关系演算

∃u(sc(u)∧∀w((sc(w)∧w[1]=1∧w[2]=2)→∃v(w[3]=v[3]∧u[1]=v[1]∧u[2]=v[2])))\exists u(sc(u)\land\forall w((sc(w)\land w[1]=1\land w[2]=2)\rightarrow\exist v(w[3]=v[3]\land u[1]=v[1]\land u[2]=v[2])))∃u(sc(u)∧∀w((sc(w)∧w[1]=1∧w[2]=2)→∃v(w[3]=v[3]∧u[1]=v[1]∧u[2]=v[2])))

2.元组演算转换成没有∀\forall∀符号的语句

转换之前需要把元组演算中的所有∀\forall∀语句全部转换成∃\exist∃语句,这里涉及到数理逻辑的知识

注意,3)4)中的∀∃\forall\exists∀∃互转后里面的P也要取反

转换后的结果如下

∃u(sc(u)∧¬∃w((sc(w)∧w[1]=1∧w[2]=2)∧¬∃v(w[3]=v[3]∧u[1]=v[1]∧u[2]=v[2])))\exists u(sc(u)\land\lnot\exist w((sc(w)\land w[1]=1\land w[2]=2)\land\lnot\exist v(w[3]=v[3]\land u[1]=v[1]\land u[2]=v[2])))∃u(sc(u)∧¬∃w((sc(w)∧w[1]=1∧w[2]=2)∧¬∃v(w[3]=v[3]∧u[1]=v[1]∧u[2]=v[2])))

3.sql语句

select * from sc u
where not exists(select * from sc wwhere sc.sno=2 and sc.sclass=1and not exists(select * from sc vwhere w.cno=v.cno and u.sno=v.sno and u.sclass=v.sclass)
)

基本上和2中的每个符号按顺序对应,应该也比较容易理解

查询至少选了1班2号同学所选课的所有同学班号、学号相关推荐

  1. 查询至少选修课程号为'c2'和'c4' 两门课程的学生学号

    选课表sc = {学号sco,课程号cno...} --查询至少选修课程号为"c2"和"c4"两门课程的学生的学号 select sca.sno from sc ...

  2. 查询至少选修了学生201215122选修的全部课程的学生号码

    这个条SQL语句是来自王姗老师<数据库系统概论>书中111页的例子.SQL语句是在我自己建立的表的基础上写出来的.SQL语句如下 select distinct Sno from tb_S ...

  3. Mysql查询至少有一门课与学号为“s001”的同学所学相同的同学的学号和姓名

    表名.字段解释 student(学生表) sc(成绩表) course(课程表) sno(学生学号) cno(课程号) sname(学生姓名) 一.分析 要查询出至少有一门课与学号为"s00 ...

  4. mysql查询至少学过学号为“s001”同学所有课的其他同学学号和姓名

    表.字段解释 表解释: student(学生表) sc(成绩表) 字段解释: sno(学号) cno(课程号) 一.分析 要想查询出至少学过学号为"s001"同学所有课的其他同学学 ...

  5. modelandview怎么在页面循环_新号段来啦!!!“靓号”怎么选?

    它 来 了 ? ? ? 它带着满满的诚意扑面而来 深圳交警官网最新公示 2020年11月10日 新!号!段!发!放! 上万个号牌新鲜"出炉"~ 新号段发放公示 为进一步提升便民服务 ...

  6. 10-4 5-4 查询至少生产三种不同速度PC的厂商 (20 分)

    一:上码 -- 查询至少生产三种不同速度PC的厂商-- 分析:1.联合pc和product表,字段为厂商和速度 表1 -- 2.按厂商名字进行分组统计厂商的个数,筛选条件为个数大于3的 表2 -- 3 ...

  7. 10-2 5-2 查询至少生产两种不同的计算机(PC或便携式电脑)且机器速度至少为133的厂商 (20 分)(思路加详解+测试用例)

    一:题目 本题目要求编写SQL语句, 查询至少生产两种不同型号的计算机(PC或便携式电脑)且机器速度至少为133的厂商,输出结果按照制造商升序排列. 提示: 本题有三种情况: (1) 至少生产两种不同 ...

  8. 设计一个排序和查找系统。能够实现对给定的一组学生的借书证信息(如:卡号、姓名、系别、班号等)进行排序和查找。

    目录 实验目的 实验题目 排序模板 实验源代码 实验结果 实验目的 了解各种内部排序方法,掌握Shell排序.快速排序.堆排序,归并排序的排序方法,并将其运用到实际问题中. 实验题目 设计一个排序和查 ...

  9. 查询快递单号物流,筛选出代收的单号

    当有快递单号需要查询时,如何快速查询,将单号物流已签收的单号中是代收的单号筛选出呢?这里分享查询快递单号物流并筛选单号的方法技巧,一起来看操作步骤吧. 全部单号查询完成后,物流信息都一一显示在快递批量 ...

最新文章

  1. 20162303 2016-2017-2 《程序设计与数据结构》第六周学习总结
  2. php捕获500错误信息,php – 如何获取有关错误500的更多信息 – 内部服务器错误?...
  3. 使用Fabric自动化你的任务
  4. 【杂谈】有三AI限量定制版书签来了,你准备好入手了吗?
  5. python高阶函数 动态_Python进阶内容(一)--- 高阶函数 High order function
  6. python股票接口_使用SINA接口获取实时股票信息
  7. Javascript面向对象编程:构造函数的继承
  8. 云计算-从基础到应用架构系列-云计算的演进
  9. HTTP请求和数据安全
  10. Android开发笔记(三十三)文本文件和图片文件的读写
  11. Congestion Charging Zone 水题
  12. VS+Qt报错无法解析的外部符号
  13. c语言中的汉字编码,【C语言学习】C语言汉字编码。。。C语言中汉字的输入
  14. 歌词模拟项目c语言,C语言之歌词解析
  15. Excel的选取和函数常用技巧及快捷键(一)
  16. 解决HA is not enable for this namenode错误
  17. 微信公众号服务器配置但没有回调,微信公众号 “服务器配置” 踩坑记
  18. 将Opera默认搜索引擎改为百度
  19. QTP的键盘鼠标录制
  20. UE4 制作十字准心+后坐力

热门文章

  1. STM32+LTC6804/LTC6811采集电压温度电流/BMS储能采集板
  2. 【技巧】只改变word背景颜色,并保持其他软件背景颜色不变
  3. jira7.2安装、中文及破解
  4. mysql 分区合并_mysql中的合并表和分区表详解(经常使用的概念)
  5. mysql 日期查询 今天、明天、本周、七天内、本月、后一个月
  6. C# 导出Excel文件 打开Excel文件格式与扩展名指定格式不一致。
  7. word2010加载MathType打开时显示“安全警告,宏已被禁用”解决办法
  8. 【python】计算miou
  9. Java培训:Java枚举是什么
  10. Leetcode 208、实现Trie(前缀树)