这个补充知识有一个点很有必要,视屏上的老师提出一点:

内链接关联查询:

如果表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

小结:如果主查询表字段从关联表只查询出一条记录,这个字段就可以作为内链接关联字段

--内链接的错误的例子,通过关联查询出重复记录

--使用groupidselect 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补充知识的更多相关文章

  1. 035医疗项目-模块三:药品供应商目录模块——供货商药品目录(批量)添加药品的功能---------Service

    这篇文章我们重点介绍Service层.因为Dao层就是用Gysypml逆向生成的Mapper就可以了.所以这里重点讲解Service层. 业务逻辑如下: 1:我们从前端页面传入有两个值:1:userg ...

  2. 033医疗项目-模块三:药品供应商目录模块——供货商药品目录t添加查询功能----------Dao层和Service层和Action层和调试

    什么叫做供货商药品目录t添加查询功能?就是说我们前面的博客里面不是说供货商登录后看到了自己供应的药品了么如下: 现在供货商想要往里面添加别的药品,那么这个药品的来源就是卫生局提供的那个Ypxx表(药品 ...

  3. 030医疗项目-模块三:药品供应商目录模块——供货商药品目录查询功能----------Dao层:基本的查询语句的编写

    我们安装显示的要求: 我们能看到显示的目录里面有:供货企业的名字(这个数据来自于供货商的表[usergys]),流水号,通用名,剂型(这些都来自药品信息表),供货的状态(这个呢在gysypml_con ...

  4. 036医疗项目-模块三:药品供应商目录模块——供货商药品目录(批量)添加药品的功能---------Action层

    这篇文章我们来讲Action层: 我们先讲开发步骤: 1:我们要根据Service层里面要传的参数,在Action层传入对应的参数. Service层是:public void insertGysym ...

  5. 023医疗项目-模块二:药品目录的导入导出-从数据库中查出数据用XSSF导出excel并存放在虚拟目录最后下载(包括调试)

    我们要实现的效果:     进入到这个页面后,输入要查询的条件,查询出药品表的数据,然后按下导出按钮 ,就会在服务器的一个目录下生成一个药品表的excel表格.  点击"导出"之后 ...

  6. 044医疗项目-模块四:采购单模块—采购单保存(Dao,Service,Action三层)

    我们上上一篇文章(042医疗项目-模块四:采购单模块-采购单明细添加查询,并且把数据添加到数据库中)做的工作是把数据插入到了数据库,我们这篇文章做的是042医疗项目-模块四:采购单模块-采购单明细添加 ...

  7. 005医疗项目-模块一:用户的查找:1.用户表查询的sql语句

    这是医疗项目的第一个模块:做一个用户的查询,可以根据用户的账号,用户的名称,单位的名称,用户的类型去查询.要求效果如下:

  8. 048医疗项目-模块四:采购单模块—采购单受理(Dao,Service,Action三层)

    需求: 我们之前把采购单交给监督单位审核了,审通过的采购单就要受理.供货商决定采购单发不发货. 说明: 我们要查的就是登录的供货商的要提供的采购药品,我们查看的是采购单详细表,至于查询条件我们用的是就 ...

  9. 046医疗项目-模块四:采购单模块—采购单审核(Dao,Service,Action三层)

    当医院把采购单提交之后,由监管单位进行采购单审核,由卫生院及卫生局进行审核.卫生局可以审核所有医院创建的采购单,卫生院只审核本辖区医院创建的采购单. 操作流程: 点击"采购单审核" ...

随机推荐

  1. clang -rewrite-objc的使用点滴

    ➠更多技术干货请戳:听云博客 clang -rewrite-objc的作用是把oc代码转写成c/c++代码,我们常用它来窥探OC的一些秘密. 1.最简单的例子 main.m的代码如下: int mai ...

  2. 【读书笔记】iOS网络-Cookie

    Cookie是HTTP协议在首个版本之后加入的一个重要组件.它向服务器提供了追踪会话状态的能力,同时又无须维持客户端与服务器之间的连接.在浏览器客户端,Cookie值是由服务器通过请求提供的,,然后被 ...

  3. location.href参数丢失

    今天用location.href跳转页面的时候遇到了一个问题. 给一个按钮添加点击事件,在js里实现跳转页面,并传递一个参数. <a class="btn btn-primary&qu ...

  4. 资源list:Github上关于大数据的开源项目、论文等合集

    Awesome Big Data A curated list of awesome big data frameworks, resources and other awesomeness. Ins ...

  5. XAML中的特殊符号几空白字符处理

    阅读目录 介绍 详细 处理 Demo下载 介绍 XAML标记语言是基于xml的,所以很多xml中的特殊符号在XAML也是需要处理的. 详细 (取自msdn) 字符 Entity 注释 &(“a ...

  6. Oracle Data Provider for .NET

    官方地址: http://www.oracle.com/technetwork/topics/dotnet/index-085163.html 终于有正式版了.不用装客户端,又小,确实好.

  7. mysql / mysqld_safe / mysqld 常见错误处理

    1. FATAL ERROR: Could not find ./bin/my_print_defaults [root@localhost scripts]# ./mysql_install_db ...

  8. win7下硬盘安装ubuntu

    首先还是分区,在计算机上右键--管理--磁盘管理.装Ubuntu分配的硬盘大小最好是(20G以上)不要太小,这里请注意,Ubuntu和Windows文件系统完全不同,所以我们划好要给Ubuntu的分区 ...

  9. android canvas d

    (以下转自:http://blog.csdn.net/longyi_java/article/details/6930480) 1.基本的绘制图片方法 //Bitmap:图片对象,left:偏移左边的 ...

  10. Linux Gitlab

    一.简介 GitLab是利用 Ruby on Rails 一个开源的版本管理系统,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目.它拥有与Github类似的功能,能够浏览源 ...