当前位置: 首页 > news >正文

HQL案例大全之1. 查询没有学全所有课的学生的学号、姓名(特殊:应该先连接,在筛选)

1. 查询没有学全所有课的学生的学号、姓名

  • 1.错误的方法
  • 2.正确的方法

表数据说明:一共是4张表

在这里插入图片描述

需求是:查询没有学全所有课的学生的学号、姓名.

前提:得对表业务数据熟悉业务含义,表结构,表关联,表字段,表内容。

1.错误的方法

常规分析:(此方法是错误的)
1.查询总共有几门课
2.从分数表去统计每个学生学了几门课

select 
stu_id,
count(*) ct
from score_info
group by stu_id
having count(*) < (select count(course_id) from course_info )

3.然后主表在去left join 1和2中的表

select 
t1.stu_id,
t2.stu_name
from student_info t1
left join (select 
stu_id,
count(*) ct
from score_info
group by stu_id
having count(*) < (select count(course_id) from course_info ))t2
on t1.stu_id = t2.stu_id

这样写,结果是错误的。
1.分数表当中,有可能有的同学没用选课,导致该同学没用统计到(inner join)
2.有的不符合数据给展示出来了(left join方式)

2.正确的方法

1.先连接
学生表和分数表相连接

select 
*
from student_info t1
left join score_info t2
on t1.stu_id = t2.stu_id

2.后过滤

select 
t1.stu_id,
t1.stu_name,
count(t2.course_id) ct
from student_info t1
left join score_info t2
on t1.stu_id = t2.stu_id
group by t1.stu_id ,t1.stu_name
having count(t2.course_id) < (select count(course_id) from course_info)

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 鸿蒙HarmonyOS应用开发为何选择ArkTS不是Java?
  • eNSP:防火墙设置模拟公司配置(二)
  • python入门基础知识·二
  • oslo_i18n学习小结
  • LocalAI离线安装部署
  • java八股文面试题
  • 智能家居装修怎么布线?智能家居网络与开关插座布置
  • java设计模式之:策略模式+工厂模式整合案例实战(一)
  • 【C++深入学习】类和对象(一)
  • QT5.12.9 通过MinGW64 / MinGW32 cmake编译Opencv4.5.1
  • [笔试题] 笔试题面试题
  • 218.贪心算法:分发糖果(力扣)
  • python如何与前端交互
  • Qt之元对象系统
  • 计算机课程名,汇总
  • 实现windows 窗体的自己画,网上摘抄的,学习了
  • @jsonView过滤属性
  • 2019年如何成为全栈工程师?
  • 30秒的PHP代码片段(1)数组 - Array
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • go append函数以及写入
  • PAT A1120
  • Python 使用 Tornado 框架实现 WebHook 自动部署 Git 项目
  • redis学习笔记(三):列表、集合、有序集合
  • select2 取值 遍历 设置默认值
  • 从重复到重用
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 翻译:Hystrix - How To Use
  • 和 || 运算
  • 简析gRPC client 连接管理
  • 排序(1):冒泡排序
  • 腾讯大梁:DevOps最后一棒,有效构建海量运营的持续反馈能力
  • 微信支付JSAPI,实测!终极方案
  • 字符串匹配基础上
  • 我们雇佣了一只大猴子...
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • !$boo在php中什么意思,php前戏
  • # 安徽锐锋科技IDMS系统简介
  • #laravel部署安装报错loadFactoriesFrom是undefined method #
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (3)nginx 配置(nginx.conf)
  • (35)远程识别(又称无人机识别)(二)
  • (C语言)fgets与fputs函数详解
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (二)hibernate配置管理
  • (附源码)ssm本科教学合格评估管理系统 毕业设计 180916
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (十)Flink Table API 和 SQL 基本概念
  • (五)activiti-modeler 编辑器初步优化
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)