sql server 实现多表连接查询
项目中要实现多表查询,用外连接实现。
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 实现多表连接查询的更多相关文章
- SQL Server 2012 - 多表连接查询
-- 交叉连接产生笛卡尔值 (X*Y) SELECT * FROM Student cross Join dbo.ClassInfo --另外一种写法 SELECT * FROM Student , ...
- 【SQL】在SQL Server中多表关联查询问题
好久没有写SQL语句的多表连接查询,总在用框架进行持久化操作.今天写了一个多表关联查询,想根据两个字段唯一确定一条数据 失败的案例如下: SELECT cyb.id,ad.name FROM [Gen ...
- SQL Server三种表连接原理
在SQL Server数据库中,查询优化器在处理表连接时,通常会使用一下三种连接方式: 嵌套循环连接(Nested Loop Join) 合并连接 (Merge Join) Hash连接 (Hash ...
- SQL Server中多表连接时驱动顺序对性能的影响
本文出处:http://www.cnblogs.com/wy123/p/7106861.html (保留出处并非什么原创作品权利,本人拙作还远远达不到,仅仅是为了链接到原文,因为后续对可能存在的一些错 ...
- 多个程序对sql server中的表进行查询和插入操作导致死锁
最近在做一个项目,是要用多个程序对sql server中的相同的数据库进行操作(查询和插入),所以在开始的时候常会出现死锁问题,后来在网上进行了咨询,发现了一些解决方法,留作大家参考: 并发去操纵一张 ...
- SQl Server 数据库多表连接
[缘由] 为了防止数据的冗余,我们会将数据库中表进行拆分,这样就产生了多张表,表与表之间通过主外键关联,但这样又造成了我们查找和修改的困难,如何进行多表之间的查找呢? 我们将一个查询同时设计两个或两个 ...
- Sql Server系列:多表连接查询
连接查询是关系数据中最主要的查询,包括内连接.外连接等.通过连接运算符可以实现多个表查询.内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值.SQL Server中的内连接有 ...
- SQL多表连接查询(详细实例)
转载博客:joeleo博客(http://www.xker.com/page/e2012/0708/117368.html) 本文主要列举两张和三张表来讲述多表连接查询. 新建两张表: 表1:stud ...
- SQL多表连接查询
SQL多表连接查询 本文主要列举两张和三张表来讲述多表连接查询. 新建两张表: 表1:student 截图如下: 表2:course 截图如下: (此时这样建表只是为了演示连接SQL语句,当然实际 ...
随机推荐
- 基于mindwave脑电波进行疲劳检测算法的设计(2)
上文讲到的是保证硬件的接通.接下来是用C语言在它提供的API接口进行连接. 在网盘中下载MindSet Development Tools这个开发包.这个目录下MindSet Development ...
- 【Spark深入学习 -10】基于spark构建企业级流处理系统
----本节内容------- 1.流式处理系统背景 1.1 技术背景 1.2 Spark技术很火 2.流式处理技术介绍 2.1流式处理技术概念 2.2流式处理应用场景 2.3流式处理系统分类 3.流 ...
- 【Big Data - Hadoop - MapReduce】通过腾讯shuffle部署对shuffle过程进行详解
摘要: 通过腾讯shuffle部署对shuffle过程进行详解 摘要:腾讯分布式数据仓库基于开源软件Hadoop和Hive进行构建,TDW计算引擎包括两部分:MapReduce和Spark,两者内部都 ...
- [原]关于在Python和C#之间消息传递的问题
问题的描述: 鉴于Python强大的网络功能和丰富的开源组件和C#开发Windows Form程序时优秀的框架,使用Python和C#混合编程可以有效的结合二者的长处,快速开发产品. 然而在这两者之间 ...
- 看雪CTF第十五题
1.直接运行起来,再用OD附加 在此处luajit加载并调用main函数 004021C7 E8 64FE0000 call CrackMe. ; luaL_newstate 004021CC 8BF ...
- Java知多少(89)列表和组合框
有两种类型的菜单:下拉式菜单和弹出式菜单.本章只讨论下拉式菜单编程方法.菜单与JComboBox和JCheckBox不同,它们在界面中是一直可见的.菜单与JComboBox的相同之处是每次只可选择一个 ...
- 分发系统介绍 expect脚本远程登录 expect脚本远程执行命令 expect脚本传递参数
expect脚本远程登录 yum install -y expect yum install -y tcl tclx tcl-devel 自动远程登录 #! /usr/bin/expect set h ...
- springboot logback 集成
在 application.yml 中敲 logging.pattern.consle ,IDEA 会联想到对应的值.单击属性就可以跳到 LoggingApplicationListener.java ...
- 使用Postmark测试后端存储性能
Postmark用于对进行频繁,大量存取小文件的存储系统的存储性能测试.原理:构建一个测试文件池,通过文件最大,最小大小,数量等参数进行配置,然后进行事务的初始化,对每一个事务中读取/附加,创建/删除 ...
- 淘宝 NPM 镜像使用
前言 因为众所周知的原因,使用node,官方NPM仓库安装依赖包是个看人品的事情,不过有万能的淘宝,所以需要部分调整就可以避免这些原因.(以下内容osx, centos下测试通过) 淘宝镜像基本使用 ...