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

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. linux每日命令(38):iostat命令

    Linux系统中的 iostat是I/O statistics(输入/输出统计)的缩写,iostat工具将对系统的磁盘操作活动进行监视.它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况.同 ...

  2. [转]深刻理解Python中的元类(metaclass)以及元类实现单例模式

    使用元类 深刻理解Python中的元类(metaclass)以及元类实现单例模式 在看一些框架源代码的过程中碰到很多元类的实例,看起来很吃力很晦涩:在看python cookbook中关于元类创建单例 ...

  3. [转]protoc-gen-lua 编译、安装、使用教程

    版权声明:本文转自http://blog.csdn.net/huutu 转载请带上 http://www.liveslives.com/ https://blog.csdn.net/cp7906216 ...

  4. Java知多少(84)图形界面之布局设计

    在界面设计中,一个容器要放置许多组件,为了美观,为组件安排在容器中的位置,这就是布局设计.java.awt中定义了多种布局类,每种布局类对应一种布局的策略.常用的有以下布局类: FlowLayout, ...

  5. Swagger使用小记

    Swagger是一种框架,用于自动生成Restfull API的文档,而不用开发者自己编写文档.它既可以减少我们创建文档的工作量,同时说明内容又整合入实现代码中,让维护文档和修改代码整合为一体,可以让 ...

  6. Eclipse 4.4(luna) 安装Veloeclipse 2.0.8时报错的问题

    在Eclipse下编辑Velocity模板的插件,支持语法着色,代码向导等功能,简单好用,没有可视化编辑. Eclipse的更新地址是:http://veloeclipse.googlecode.co ...

  7. jquery 动画总结(主要指效果函数)

    动画无非两类:帧动画frame和变形动画tween,以及3d动画.不论web还是安卓苹果app,动画原理都是这些. web app 动画实现的途径,无非这几种:1 gif动画---这就是帧动画,把若干 ...

  8. linux 修改文件类型

    :Unix及类Unix系统里,每行结尾只有换行“\n”,Windows系统里面,每行结尾是换行+回车“\n\r”. 利用Linux下的vim编辑器,可以方便的在dos文件.unix文件之间进行切换,且 ...

  9. 安卓开发笔记——丰富多彩的TextView

    随手笔记,记录一些东西~ 记得之前写过一篇文章<安卓开发笔记——个性化TextView(新浪微博)>:http://www.cnblogs.com/lichenwei/p/4411607. ...

  10. Oracle迁移至PostgreSQL工具之Ora2Pg

    1. 描述 Ora2Pg是一个免费的工具,用于将Oracle数据库迁移到PostgreSQL兼容的模式.它连接您的Oracle数据库,自动扫描并提取它的结构或数据,然后生成可以装载到PostgreSQ ...