医药采购系统平台第5天02:常用Sql查询总结&供货商药品目录维护的查询实现&供货商药品目录维护的添加查询实现

如果想要获取相关的源码,笔记,和相关工具,对项目需求的二次开发,可以关注我并私信!!!


一 常用SQL查询总结

表A和表B要做关联查询。

表A当成主查询表:查询记录主体从主查询表来查处。

表B关联表

1 内链接关联查询

由于主关联表dictinfo表的外键字段typecode指向关联表dictype的主键typecode字段,所以可以通过该外键进行内链接查询,如下:

--通过外键关联的内连接查询

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。

2 外链接关联查询

表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中只能关联查询一部分数据,只能使用外链接

3 子查询

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

4 嵌套表查询

可以将一个sql查询结果组成一个虚表,查询方式和查询一个实体表相同的。

组成的虚拟表字段是不允许重复的,

例如:错误示例如下:

select * from 

(

       select '1' a, '1' a , '2' b from dual

)

否则 :

二 供货商药品目录维护的查询实现

1 需求

必须使用供货商登陆系统,点击“供货商药品目录维护”链接后,会显示本供货商所供货到的药品目录信息。

2 DAO实现

根据需求可知,页面中的查询条件都是关联表中的字段,例如:通用名、剂型、规格...............这些是属于YPXX药品信息表中的记录!!

所以只能使用自定义查询条件,查询供货商药品目录,而且,供货商只允许查询到本供货商供应的药品信息!

2.1 使用逆向工程生成单表

因为需要用到供货商药品目录表gysypml和供货商药品目录控制表gysypml_contrl两张表,所以还需要使用逆向工程来生成这两张表相关的内容,修改如下generatorConfig-business.xml文件中的内容

然后把生成的内容复制到项目中,拷贝过程如前所述,这里不再赘述了!!!

红框内是复制后的项目中所保留的内容!

逆向工程所对应的mapper接口的两个java文件,如下图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

elastic_solr

可以对需求进行二次开发

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值