一个表里有多个字段需要同时使用字典表进行关联显示,如何写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]LeetCode306. 累加数 | Additive Number
Additive number is a string whose digits can form additive sequence. A valid additive sequence shoul ...
- [Swift]LeetCode587. 安装栅栏 | Erect the Fence
There are some trees, where each tree is represented by (x,y) coordinate in a two-dimensional garden ...
- postgresql 基础sql
创建用户和密码:crate user 用户名 with password '密码' : 创建 alter user 用户名 with password ’密码' ; 修改用户密码 查看用户信息: se ...
- MyBatis 处理关系运算符
MyBatis mapper文件是xml文件,使用关系运算符需要进行转义. 关系运算符 转义后字符 < < <= <= > > > >=
- Java 11新功能抢先了解
目前 Oracle 已经发布了 Java Development Kit 10,下个版本 JDK 11 也即将发布.本文介绍 Java 11 的新功能. 根据Oracle新出台的每6个月发布一次Jav ...
- linux中一些简便的命令之sort
1.sort file 直接按照顺序排列 2.sort -r file 按照反序排列 3.sort -t [符号]file 指定符号的分隔符,默认为空格 sort -t ';' file 4.sort ...
- 【Spark篇】---SparkStream初始与应用
一.前述 SparkStreaming是流式处理框架,是Spark API的扩展,支持可扩展.高吞吐量.容错的实时数据流处理,实时数据的来源可以是:Kafka, Flume, Twitter, Zer ...
- requirejs、vue、vuex、vue-route的结合使用,您认为可行吗?
在五一节之前和一网友讨论前端技术时,对方提到vue.vue-route如果配合requirejs应用.当时的我没有想得很明白,也没能这位网友一个准确的回复,但我许诺于他五一研究后给他一个回复.本是一天 ...
- Unity GC 优化要点
参考:http://blog.csdn.net/znybn1/article/details/76464896 为啥要点?因为讲的重点. 游戏运行时来存储数据,当这些数据不再被使用时,存储这些数据的内 ...
- ZooKeeper 01 - 什么是ZooKeeper + 部署ZooKeeper集群
目录 1 什么是ZooKeeper 2 ZooKeeper的功能 2.1 配置管理 2.2 命名服务 2.3 分布式锁 2.4 集群管理 3 部署ZooKeeper集群 3.1 下载并解压安装包 3. ...