首页 > 代码库 > 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查询(医疗项目的复习)