一个表里有多个字段需要同时使用字典表进行关联显示,如何写sql查询语句
参考:https://bbs.csdn.net/topics/330032307
数据库里面有一个字典表,这张表里面有id段和对应的名字字段。
在另外一个记录的表里面有对应的上述字典表的id,而且有多个字段都含有该id字段。需要将其查出来,并且用名字。
1、第一种写法,不使用 left join
SELECT a.id AS '编号', 'STORY' AS '类型' , a.title AS '标题',b.name AS '所属项目' ,
c.realname AS '创建者',
a.estimate AS '计划时间',
d.realname AS '责任研发',
a.resolvedDate AS '实际解决时间',a.closedDate AS '实际关闭时间',a.STATUS
FROM zt_story a , zt_project b, zt_user c, zt_user d
WHERE a.project=b.id AND a.openedby=c.account AND a.assignedTo=d.account AND a.id>=8650 AND a.id<= 8692
ORDER BY a.id
查询出的结果是严格的比照,为35条,比期望的43条少了8条。因为字典表内容缺少一些。
SELECT a.id AS '编号', 'BUG' AS '类型' , a.title AS '标题',b.name AS '所属项目' ,
c.realname AS '创建者',
a.estimateDoneDate AS '计划时间',
d.realname AS '责任研发',
a.resolvedDate AS '实际解决时间',a.closedDate AS '实际关闭时间',a.STATUS
FROM zt_bug a , zt_project b, zt_user c, zt_user d
WHERE a.project=b.id AND a.openedby=c.account AND a.assignedTo=d.account AND a.id>=28095
ORDER BY a.id
查出29条记录。
2、使用Left join方法,可以全部查出来,43条,一些字典表里没有的数据对应字段为空
SELECT a.id AS '编号', 'STORY' AS '类型' , a.title AS '标题',b.name AS '所属项目' ,
c.realname AS '创建者',
a.estimate AS '计划时间',
d.realname AS '责任研发',
a.resolvedDate AS '实际解决时间',a.closedDate AS '实际关闭时间',a.STATUS
FROM zt_story a
LEFT JOIN zt_project b ON a.project=b.id
LEFT JOIN zt_user c ON a.openedby=c.account
LEFT JOIN zt_user d ON a.assignedTo=d.account
WHERE a.id>=8650 AND a.id<= 8692
ORDER BY a.id
上述语句完全将期望的43条记录全部查出,只是有8条记录的部分字段是空的。
SELECT a.id AS '编号', 'BUG' AS '类型' , a.title AS '标题',b.name AS '所属项目' ,
c.realname AS '创建者',
a.estimateDoneDate AS '计划时间',
d.realname AS '责任研发',
a.resolvedDate AS '实际解决时间',a.closedDate AS '实际关闭时间',a.STATUS
FROM zt_bug a
LEFT JOIN zt_project b ON a.project=b.id
LEFT JOIN zt_user c ON a.openedby=c.account
LEFT JOIN zt_user d ON a.assignedTo=d.account
WHERE a.id>=28095
ORDER BY a.id
该表对应的字典表数据均存在,所以上述语句执行后查询到的结果也是29条。
做个标记。
总结:
根据自己的期望,如果需要严格比照,不要用 LEFT JOIN。
如果需要显示全部记录,使用 LEFT JOIN
https://blog.csdn.net/flexitime/article/details/2380531
Delphi中写复杂SQL语句的简便方式
一个表里有多个字段需要同时使用字典表进行关联显示,如何写sql查询语句的更多相关文章
- ThinkPHP 条件是一个表里面的两个字段比较
ThinkPHP 条件是一个表里面的两个字段比较 今天群里有人问,thinkphp框架,条件是一个表里的两个字段,怎么查询. 然后就做了下测试: 比如查询出 手机号就是微信号 的用户: (1)首先,正 ...
- sql查询语句时怎么把几个字段拼接成一个字段
sql查询语句时怎么把几个字段拼接成一个字段SELECT CAST(COLUMN1 AS VARCHAR(10)) + '-' + CAST(COLUMN2 AS VARCHAR(10) ...) a ...
- 使用正则表达式获取Sql查询语句各项(表名、字段、条件、排序)
string text = "select * from [admin] where aa=1 and cc='b' order by aa desc "; Regex reg = ...
- SpringData JPA进阶查询—JPQL/原生SQL查询、分页处理、部分字段映射查询
上一篇介绍了入门基础篇SpringDataJPA访问数据库.本篇介绍SpringDataJPA进一步的定制化查询,使用JPQL或者SQL进行查询.部分字段映射.分页等.本文尽量以简单的建模与代码进行展 ...
- sqlmap映射继承机制及映射字段顺序与SQL查询字段顺序无关
<typeAlias alias="TblSpPartsinfo" type="com.bn.car.biz.supply.dao.po.PartsInfoPO&q ...
- SQL查询一个表里面某个字段值相同的数据记录
好长时间没有用SQL了...还停留在学生时代的水平... 转: 昨天遇到个面试题:查询一个表里面某个字段值相同的数据记录,好久没有写过这种,还真的花了点时间才写出来.如表g_carddetail,有 ...
- 使用dao时,如何同时使用动态表名和过滤字段?
使用dao时,如何同时使用动态表名和过滤字段? 发布于 630天前 作者 wukonggg 316 次浏览 复制 上一个帖子 下一个帖子 标签: 无 如题.求样例代码 1 回复 wend ...
- mysql的if用法解决同一张数据表里面两个字段是否相等统计数据量。
MySQL的使用用法如下所示:格式:if(Condition,A,B)意义:当Condition为true时,返回A:当Condition为false时,返回B.作用:作为条件语句使用.mysql的i ...
- [SQL]查询某一个字段在某一段时期数据库中使用到的记录
有些时候我们常常须要哪里用到了一些表,又或者什么时候运行了某一个存储过程.整理出了在某段时期内数据库运行的sql查询.也能够查询到数据库中某些字段的存放处.非常好非常强大.希望能帮到大家~ SELEC ...
随机推荐
- [Swift]LeetCode243.最短单词距离 $ Shortest Word Distance
Given a list of words and two words word1 and word2, return the shortest distance between these two ...
- Python 实现获取微信好友信息
最近用闲余时间看了点python,在网上冲浪时发现有不少获取微信好友信息的博客,对此比较感兴趣,于是自己敲了敲顺便记录下来. 一.使用 wxpy 模块库获取好友男比例信息和城市分布. # -*- co ...
- 【Storm篇】--Storm中的同步服务DRPC
一.前述 Drpc(分布式远程过程调用)是一种同步服务实现的机制,在Storm中客户端提交数据请求之后,立刻取得计算结果并返回给客户端.同时充分利用Storm的计算能力实现高密度的并行实时计算. 二. ...
- 如何阅读jdk源码?
简介 这篇文章主要讲述jdk本身的源码该如何阅读,关于各种框架的源码阅读我们后面再一起探讨. 笔者认为阅读源码主要包括下面几个步骤. 设定目标 凡事皆有目的,阅读源码也是一样. 从大的方面来说,我们阅 ...
- ActionMQ集群部署
ActiveMQ集群部署 一.应用场景 消息中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题.实现高性能,高可用,可伸缩和最终一致性架构.是大型分布式系统不可缺少的中间件.目 ...
- .NET Core 2.x中使用Named Options处理多个强类型配置实例
来源: Using multiple instances of strongly-typed settings with named options in .NET Core 2.x 作者: Andr ...
- webpack 2 系列
webpack 2 系列 webpack 是一个强大的工具,学会通过工具来解决开发效率问题,是每一个 工程师都必备的技能之一. 那么我们来从零开始搭建一个 基于webpack 2 到 开发架子,来提升 ...
- Kafka基础简介
kafka是一个分布式的,可分区的,可备份的日志提交服务,它使用独特的设计实现了一个消息系统的功能. 由于最近项目升级,需要将spring的事件机制转变为消息机制,针对后期考虑,选择了kafka作为消 ...
- WebAssembly完全入门——了解wasm的前世今身
前言 接触WebAssembly之后,在google上看了很多资料.感觉对WebAssembly的使用.介绍.意义都说的比较模糊和笼统.感觉看了之后收获没有达到预期,要么是文章中的例子自己去实操不能成 ...
- 翻译 Asp.Net Core 2.2.0-preview1已经发布
Asp.Net Core 2.2.0-preview1已经发布 原文地址 ASP.NET Core 2.2.0-preview1 now available 今天我们很高兴地宣布,现在可以试用ASP. ...