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

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. 清除win下连接的linux的samba服务缓存 用户名和密码

    1:cmd 2:在停止查看共享的情况下执行:net use * /del 删除所有 或根据列表,一个个删除连接: net use 远程连接名称 /del

  2. python 列表排序方法sort、sorted技巧篇

    Python list内置sort()方法用来排序,也可以用python内置的全局sorted()方法来对可迭代的序列排序生成新的序列. 1)排序基础 简单的升序排序是非常容易的.只需要调用sorte ...

  3. 【Java】经典示例代码

    成鹏致远 | lcw.cnblogs.com | 2014-02-08 单例设计模式 class Singleton{ private static Singleton instance = new ...

  4. iOS开发微信支付

    现在基本所有的App都会接入支付宝支付以及微信支付,也有很多第三方提供给你 SDK帮你接入,但是这种涉及到支付的东西还是自己服务器搞来的好一些,其实搞懂了 逻辑非常的简单,下面直接给大家说说下基本流程 ...

  5. 假设分配给命令的连接位于本地挂起事务中,ExecuteReader 要求命令拥有事务。命令的 Transaction 属性尚未初始化

    {System.InvalidOperationException: 假设分配给命令的连接位于本地挂起事务中.ExecuteReader 要求命令拥有事务.命令的 Transaction 属性尚未初始 ...

  6. chrome调试手机webview中页面

    http://blog.csdn.net/freshlover/article/details/42528643 注: 1. 可以调试真机上页面(USB连接)和虚拟机上页面 2. 手机系统需要4.4+ ...

  7. oracle转mysq遇到的问题--------1.nextval问题

    oralce里面有一个问题,在做采购单模块时,遇到如下问题: 所以我们要解决这个问题: 第一步: 并发生成方式: sequence的并发生成方式同非并发生成方式都需要建立sequence表,如下: 一 ...

  8. 提升linux下TCP服务器并发连接数(limit)

    https://cloud.tencent.com/developer/article/1069900 1.修改用户进程可打开文件数限制   在Linux平台上,无论编写客户端程序还是服务端程序,在进 ...

  9. 30分钟入门Java8之lambda表达式

    前言 Google在今年发布Android N开发者预览版,一并宣布开始支持Java 8.我们终于能在Android开发中使用到Java8的一些语言特性了.目前支持: 默认方法 lambda表达式 多 ...

  10. 小程序渲染html的两种方法

    一.使用文档自带的原生API  rich-text, nodes属性直接绑定需要渲染的html内容即可,文档参见这里:https://developers.weixin.qq.com/miniprog ...