首页 > 代码库 > SQL查询(医疗项目的复习)
SQL查询(医疗项目的复习)
l怎么写Sql语句的思路:
主查询表:SYSUSER
关联查询表:userjd(监督单位表),useryy(医院表)
SQL查询分为:
1.内连接
如果两张表有外键关系就可以使用内连接,因为通过内连接每一条只能返回单条记录。话句话说如果主查询表的字段通过关联查询表能查到(且只能查询一条,就是在关联表中只能查出一条),可以使用内链接。
举例1:
表:DICTINFO:
如下:
这边表中ID是主键。在这里TYPECODE是外键。
表:DICTTYPE.
如下:
其中TYPECODE是主键。
这样一来两张表就有了主外键的关系(表DICTTYPE的主键TYPECODE在表DICTINFO中是外键)。
好了我们就可以使用内连接了。
为什么上面说通过内连接每一条只能返回单条记录呢?
因为:你想啊,typecode是外键,什么是外键?在表dicttype中typecode是主键,主键是唯一的,那么就是typecode都是唯一的,那么dictinfo.typecode去匹配dicttype里面的
typecode时只有一条记录,这就是说只能返回单条的记录,也就是说如果在dicttype中的codetype不是唯一的,那么就会查出来多条的记录,那么就不是内连接了。
举例2:
再举一个例子:做一个数据查询使用内连接的方式。
假设有两张表sysuser表还有dictinfo表,我们查sysuser表查出了Userid和GroupID如下:
但是我想知道这里的GROUPID到底代表是什么,我们根据表的设计可以从dictinfo表中查到1,2,3,4到底代表什么,比如
好了知道了要求后我们就来使用内连接来实现。
其实
这个东西就是一个结果集我们把它当成一张表(这里的DICTCODE具有唯一性,可以当成是主外键关系)
所以根据内连接思路我们这么写sql语句:
select userid,groupid,info from sysuser,(select id,info,dictcode from dictinfo where typecode=‘s01‘) grouptable where grouptable.dictcode=sysuser.groupid
(select id,info,dictcode from dictinfo where typecode=‘s01‘) grouptable 就相当于把查出来的结果集当成了一张grouptable的表。
2.外链接
3.子查询
SQL查询(医疗项目的复习)