项目中要实现多表查询,用外连接实现。

a表 a(aid,aname) 其中aid为pk

b表 b(aid,bname,aid) 其中 bid为pk,aid为fk

c表 c(cid,cname,aid) 其中 cid为pk,aid为fk

d表 d(did,dname,aid) 其中 did为pk,aid为fk

b,c,d表中外键对应的记录可能多余一条,也可能一条没有.

select a.id,a.aname,b.bname,c.cname,d.dname  from  a
left join b on a.aid=b.aid
left join c on a.aid=c.aid
left join d on a.aid=d.aid
where a.aid='48CBD6D7-010C-9CC9-30EF-E9F75B22BA75'

由于bcd表中对应的记录可能不止一条 如果a有一条数据,b有两条,c有两条,d一条也没有,那使用上面的方法就会有四条结果。

现在使用前面介绍的sql server 按外键分组查询  来选择b、c、d表中的要求数据。

select ROW_NUMBER() over(partition by lsh order by e.bDJSJ desc,e.cDJSJ desc,e.dDJSJ ) RN,e.* from
(select a.lsh,convert(varchar(10),a.DJRQ,120) DJRQ,a.GLH,a.CBKBH,a.BGDWDM,a.BGDWMC,a.XM,a.ZJLXDM,a.ZJHM,a.XB,
FLOOR(datediff(DY,a.CSRQ,getdate())/365.25) NL,CONVERT(varchar(10),a.CSRQ,120) CSRQ,a.SZNL,a.MZ,a.ZY,a.QTZY,a.LXDH,a.SJHM,a.JYRY,
a.GZDW,a.BRGS,a.HKLX,a.HKDXXDZ,a.JZDXXDZ,a.DJFL,a.ZLFL,a.FXFS,convert(varchar(10),a.DYZZCSRQ,120) DYZZCSRQ,convert(varchar(10),a.CZRQ,120) CZRQ,
convert(varchar(10),a.QZRQ,120) QZRQ,a.ZDFX,a.ZDJG,a.FWJHBW,a.HBZDM,a.HBZMC,a.HBZQT,a.FJHKD,a.HIVJCSJ,a.HIVJCJG,a.CD4XBSZ,a.CD4JCSJ,a.SFJSKBDZL,
convert(varchar(10),a.KBDZLKSRQ,120) KBDZLKSRQ,a.SFJSFFXNMZL,convert(varchar(10),a.FFXNMZLKSRQ,120) FFXNMZLKSRQ,a.SFJSKJHZL,a.HLGLFS,a.SJGLFS,
a.SFXTGL,a.TZZLYY,convert(varchar(10),a.TZZLRQ,120) TZZLRQ,a.FJHSWYY,a.BZ,b.YX,convert(varchar(10),b.TJRQ,120) TJRQ,b.TTPJG,b.TPYJG,c.SYDWDM,
c.SYDWMC,convert(varchar(10),c.SYRQ,120) SYRQ,convert(varchar(10),d.ZLKSRQ,120) ZLKSRQ,d.DQZLFA,d.QTFA,b.XT_DJSJ bDJSJ,c.XT_DJSJ cDJSJ,
d.XT_DJSJ dDJSJ
from JB_JH_GLK a left join JB_JH_TJJL b on a.LSH=b.GLKLSH left join JB_JH_YMSYJL c on a.LSH=c.GLKLSH left join JB_JH_ZLJL d on a.LSH=d.GLKLSH ) e

最终结果会按组来分。

sql server 实现多表连接查询的更多相关文章

  1. SQL Server 2012 - 多表连接查询

    -- 交叉连接产生笛卡尔值 (X*Y) SELECT * FROM Student cross Join dbo.ClassInfo --另外一种写法 SELECT * FROM Student , ...

  2. 【SQL】在SQL Server中多表关联查询问题

    好久没有写SQL语句的多表连接查询,总在用框架进行持久化操作.今天写了一个多表关联查询,想根据两个字段唯一确定一条数据 失败的案例如下: SELECT cyb.id,ad.name FROM [Gen ...

  3. SQL Server三种表连接原理

    在SQL Server数据库中,查询优化器在处理表连接时,通常会使用一下三种连接方式: 嵌套循环连接(Nested Loop Join) 合并连接 (Merge Join) Hash连接 (Hash ...

  4. SQL Server中多表连接时驱动顺序对性能的影响

    本文出处:http://www.cnblogs.com/wy123/p/7106861.html (保留出处并非什么原创作品权利,本人拙作还远远达不到,仅仅是为了链接到原文,因为后续对可能存在的一些错 ...

  5. 多个程序对sql server中的表进行查询和插入操作导致死锁

    最近在做一个项目,是要用多个程序对sql server中的相同的数据库进行操作(查询和插入),所以在开始的时候常会出现死锁问题,后来在网上进行了咨询,发现了一些解决方法,留作大家参考: 并发去操纵一张 ...

  6. SQl Server 数据库多表连接

    [缘由] 为了防止数据的冗余,我们会将数据库中表进行拆分,这样就产生了多张表,表与表之间通过主外键关联,但这样又造成了我们查找和修改的困难,如何进行多表之间的查找呢? 我们将一个查询同时设计两个或两个 ...

  7. Sql Server系列:多表连接查询

    连接查询是关系数据中最主要的查询,包括内连接.外连接等.通过连接运算符可以实现多个表查询.内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值.SQL Server中的内连接有 ...

  8. SQL多表连接查询(详细实例)

    转载博客:joeleo博客(http://www.xker.com/page/e2012/0708/117368.html) 本文主要列举两张和三张表来讲述多表连接查询. 新建两张表: 表1:stud ...

  9. SQL多表连接查询

    SQL多表连接查询 本文主要列举两张和三张表来讲述多表连接查询. 新建两张表: 表1:student  截图如下: 表2:course  截图如下: (此时这样建表只是为了演示连接SQL语句,当然实际 ...

随机推荐

  1. 每日英语:These Gadgets Aim To Put Some Teeth Into The Internet Of Things

    What the world needs now is a Web-enabled toothbrush. That part is clear to several oral-hygiene com ...

  2. border绘制三角形

    (1)有边框的三角形 我们来写下带边框的三角形. 如果是一个正方形,我们写边时,会用到border,但我们这里讨论的三角形本身就是border,不可能再给border添加border属性,所以我们需要 ...

  3. 用panels 制作drupal首页

    1.下载zen主题 路径:https://www.drupal.org/project/zen2.“启用并设为默认”3.基于zen制作子主题 把zen目录下STARTERKIT文件夹,复制到sites ...

  4. 解决:android源码同步repo sync 时出现的fatal:duplicate path错误

    问题重现: 解决方法: 1.删除android项目里隐藏的 .repo 文件夹中除了以下几个文件夹的其他文件及文件夹 2.重新初始化android项目 repo init -u https//gith ...

  5. Angularjs的那些事 – 视图的生命周期

    Angularjs的最主要的一个应用场景就是单页面应用(SinglePageApplication),但是SPA中会有一个明显的问题,在视图切换的时候,它只会用新视图去替换视图容器内的HTML,但如果 ...

  6. 使用grep查找字符串

    如下: grep -r 'target string' --exclude='pattern' dir/ 例子: grep -r Debug --exclude='*.js' ./ 查找本目录下除了j ...

  7. EasyRadius 动态域名DDNS设置工具,支持WayOS三代,完美解决近段时间3322和每步不稳定问题

    以下软件只适合拥有公网IP的用户哦,要是您没有公网IP,只能和我们联系,获取VPN了 EasyRadius从1.65开始就提供DDNS,中途由于我们升级了安全性,导致DDNS更新失败 这段时间由于33 ...

  8. 【转帖】解决远程连接MariaDB(mysql)很慢的方法

    在CentOS7上安装完成MariaDB之后,发现无论命令行还是程序中连接MariaDB的时候都很慢,大约要一二十秒,于是网上搜索了一番,发现下面的文章内容: 在进行 ping和route后发现网络通 ...

  9. linux几个命令

    ll |wc -l 统计目录下多少文件 df -h 磁盘统计大小 du -sh 该目录占磁盘总大小 du -sh * 该目录下每个目录占用磁盘大小

  10. VBA 根据Find方法根据特定内容查找单元格

    http://club.excelhome.net/thread-940744-1-1.html 2. Find方法的语法[语法]<单元格区域>.Find (What,[After],[L ...