一个表里有多个字段需要同时使用字典表进行关联显示,如何写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]LeetCode606. 根据二叉树创建字符串 | Construct String from Binary Tree
You need to construct a string consists of parenthesis and integers from a binary tree with the preo ...
- Java接口实现传参
package com.gezhi.interfaces;/** * 新建一个dog类实现接口livingable(狗吃和上厕所都是与生俱来的不应该写成接口) * @author square 凉 * ...
- 优化之XML组件
可在XML Parser 组件和XML Source定义中删除非project group,因为不需为这些非project group分配内存,但需要维护主键外键约束 ________________ ...
- BBS论坛(二十二)
22.1.七牛js上传轮播图图片 (1)common/zlqiniu.js 'use strict'; var zlqiniu = { 'setup': function (args) { var d ...
- 网络协议 10 - Socket 编程(上):实践是检验真理的唯一标准
系列文章传送门: 网络协议 1 - 概述 网络协议 2 - IP 是怎么来,又是怎么没的? 网络协议 3 - 从物理层到 MAC 层 网络协议 4 - 交换机与 VLAN:办公室太复杂,我要回学校 网 ...
- Session知识点
知识点概要 - Session - CSRF - Model操作 - Form验证(ModelForm) - 中间件 - 缓存 - 信号 内容详细: 1. S ...
- MongoDB exception:connection failed
根据http://www.runoob.com/mongodb/mongodb-window-install.html的教程配置了MongoDB,Mongod.exe配置为 --port 指令表明mo ...
- C#版 - Leetcode 306. 累加数 - 题解
版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. C#版 - L ...
- Nginx 优化静态文件访问
简介 Web 开发中需要的静态文件有:CSS.JS.字体.图片,可以通过web框架进行访问,但是效率不是最优的. Nginx 对于处理静态文件的效率要远高于 Web 框架,因为可以使用 gzip 压缩 ...
- Kafka监控系统Kafka Eagle剖析
1.概述 最近有同学留言反馈了使用Kafka监控工具Kafka Eagle的一些问题,这里笔者特意整理了这些问题.并且希望通过这篇博客来解答这些同学的在使用Kafka Eagle的时候遇到的一些困惑, ...