031医疗项目-模块三:药品供应商目录模块——供货商药品目录查询功能----------sql补充知识
这个补充知识有一个点很有必要,视屏上的老师提出一点:
内链接关联查询:
如果表A和表B有一个外键关联 ,可以通过外键进行内链接查询
select dictinfo.*, dicttype.typename
from dictinfo, dicttype
where dictinfo.typecode = dicttype.typecode
--不通过外键,通过groupid查询用户类型的代码结果集,只能查询出一条记录,可以使用内链接
select sysuser.*, dictinfo.info
from sysuser,
(select dictcode, typecode, info from dictinfo where typecode = 's01') dictinfo
where sysuser.groupid = dictinfo.dictcode
小结:如果主查询表字段从关联表只查询出一条记录,这个字段就可以作为内链接关联字段
--内链接的错误的例子,通过关联查询出重复记录
--使用groupid从select dictcode, typecode, info from dictinfo可以找到多个记录,不能使用内链接,可能会出现重复记录
select sysuser.*
from sysuser, (select dictcode, typecode, info from dictinfo) dictinfo
where sysuser.groupid = dictinfo.dictcode
注意:如果使用内链接查询出现重复记录,首先去思考是否是sql写错了,不能直接去使用distinct去除重复记录。
有一些特殊情况下还是需要使用distinct去除重复记录,比如复杂的统计分析sql。
看这个项目视屏的时候我刚好也在看50个查询系列,写那里的sql查询语句我就碰到了这个问题。我也用了Distinct函数,原来是不能用的啊。
外链接关联查询:
表A,表B中只有一部分数据和表A匹配,不能使用内链接。
主查询是表A,只能使用外链接。
--查询用户所属单位,sysid对应三张表的id
select sysuser.*,useryy.mc from sysuser left join useryy on sysuser.sysid = useryy.id
select * from useryy right join sysuser on sysuser.sysid = useryy.id
--以上的需要不能使用内链接
select sysuser.*,useryy.mc from sysuser, useryy where sysuser.sysid = useryy.id
小结:
表A中从表B中只能关联查询一部分数据,只能使用外链接
子查询
select sysuser.*,
(select * from useryy where id = sysuser.sysid)
from sysuser
子查询只能返回一列,否则 :

子查询只允许返回一行,否则 :

正确的sql:
--子查询
--根据sysid取出单位名称
--根据groupid查询用户类型代码对应的名称
select sysuser.*,
(select mc from useryy where id = sysuser.sysid)sysmc,
(select info from dictinfo where dictcode = sysuser.groupid and typecode = 's01')groupname
from sysuser
嵌套表
可以将一个sql查询结果组成一个虚表,查询方式和查询一个实体表相同的。
组成的虚拟表字段是不允许重复的,否则 :

031医疗项目-模块三:药品供应商目录模块——供货商药品目录查询功能----------sql补充知识的更多相关文章
- 035医疗项目-模块三:药品供应商目录模块——供货商药品目录(批量)添加药品的功能---------Service
这篇文章我们重点介绍Service层.因为Dao层就是用Gysypml逆向生成的Mapper就可以了.所以这里重点讲解Service层. 业务逻辑如下: 1:我们从前端页面传入有两个值:1:userg ...
- 033医疗项目-模块三:药品供应商目录模块——供货商药品目录t添加查询功能----------Dao层和Service层和Action层和调试
什么叫做供货商药品目录t添加查询功能?就是说我们前面的博客里面不是说供货商登录后看到了自己供应的药品了么如下: 现在供货商想要往里面添加别的药品,那么这个药品的来源就是卫生局提供的那个Ypxx表(药品 ...
- 030医疗项目-模块三:药品供应商目录模块——供货商药品目录查询功能----------Dao层:基本的查询语句的编写
我们安装显示的要求: 我们能看到显示的目录里面有:供货企业的名字(这个数据来自于供货商的表[usergys]),流水号,通用名,剂型(这些都来自药品信息表),供货的状态(这个呢在gysypml_con ...
- 036医疗项目-模块三:药品供应商目录模块——供货商药品目录(批量)添加药品的功能---------Action层
这篇文章我们来讲Action层: 我们先讲开发步骤: 1:我们要根据Service层里面要传的参数,在Action层传入对应的参数. Service层是:public void insertGysym ...
- 023医疗项目-模块二:药品目录的导入导出-从数据库中查出数据用XSSF导出excel并存放在虚拟目录最后下载(包括调试)
我们要实现的效果: 进入到这个页面后,输入要查询的条件,查询出药品表的数据,然后按下导出按钮 ,就会在服务器的一个目录下生成一个药品表的excel表格. 点击"导出"之后 ...
- 044医疗项目-模块四:采购单模块—采购单保存(Dao,Service,Action三层)
我们上上一篇文章(042医疗项目-模块四:采购单模块-采购单明细添加查询,并且把数据添加到数据库中)做的工作是把数据插入到了数据库,我们这篇文章做的是042医疗项目-模块四:采购单模块-采购单明细添加 ...
- 005医疗项目-模块一:用户的查找:1.用户表查询的sql语句
这是医疗项目的第一个模块:做一个用户的查询,可以根据用户的账号,用户的名称,单位的名称,用户的类型去查询.要求效果如下:
- 048医疗项目-模块四:采购单模块—采购单受理(Dao,Service,Action三层)
需求: 我们之前把采购单交给监督单位审核了,审通过的采购单就要受理.供货商决定采购单发不发货. 说明: 我们要查的就是登录的供货商的要提供的采购药品,我们查看的是采购单详细表,至于查询条件我们用的是就 ...
- 046医疗项目-模块四:采购单模块—采购单审核(Dao,Service,Action三层)
当医院把采购单提交之后,由监管单位进行采购单审核,由卫生院及卫生局进行审核.卫生局可以审核所有医院创建的采购单,卫生院只审核本辖区医院创建的采购单. 操作流程: 点击"采购单审核" ...
随机推荐
- Java中的内部类(成员内部类、静态内部类、局部内部类、匿名内部类)
Java中的内部类(成员内部类.静态内部类.局部内部类.匿名内部类) 神话丿小王子的博客主页 我们先看这样一段话:人是由大脑.肢体.器官等身体结果组成.而组成我们人体的心脏它也有自己的属性和行为(血液 ...
- 巧用Xode中的代码块(转)
在我们编码的过程中,总会发现有一些重复的编码工作,可能你会不厌其烦的去copy and paste,但是你有去考虑过怎样解决这样的问题吗?其实现在很多的编程IDE都能帮助我们减少一些编码的任务,提高编 ...
- GitHub Top 100 的项目(iOS)
主要对当前 GitHub 排名前 100 的项目做一个简单的简介, 方便初学者快速了解到当前 Objective-C 在 GitHub 的情况. Android 版本的在此: https://gith ...
- 手把手教你使用Git
一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. 二:SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以 ...
- php底层运行原理
http://www.cnblogs.com/phphuaibei/archive/2011/09/13/2174927.html
- 安装docker后,VMware网络无法访问了,VMware重置网络设置
1.vmware虚拟机处于关闭状态 2.vmware程序->edit(编辑)-->左下角 "Restore Default"恢复默认设置 [恢复]完成后 ...
- FileOutputStream VS FileWriter
当我们使用Java往文件写入数据的时候,我们有两种方式,使用FileOutputStream或FileWriter. FileOutputStream: File fout = new File(fi ...
- JavaScript(一)——简介(简单介绍)
1.JavaScript是个什么东西? 它是个脚本语言,需要有宿主文件,它的宿主文件是HTML文件. 2.它与Java什么关系? 没有什么直接的联系,Java是Sun公司(已被Oracle收购了),J ...
- 【hadoop】——压缩工具比较
文件压缩主要有两个好处,一是减少了存储文件所占空间,另一个就是为数据传输提速.在hadoop大数据的背景下,这两点尤为重要,那么我现在就先来了解下hadoop中的文件压缩. hadoop里支持很多种压 ...
- sqlyog不用密码登陆(强制取消)
1.启用命令行.cd ../返回磁盘根目录.输入D: 进入D盘.dir可以显示所以文件夹. 2.在D盘找到mysql安装目录的bin文件夹 cd /xampp/mysql/bin 3.然后输入命令'm ...