我这个SQL语句进行多表联查时为啥关联字段查不出来?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我这个SQL语句进行多表联查时为啥关联字段查不出来?相关的知识,希望对你有一定的参考价值。
select news.*, states.ColumnName, states.NewsTypeName, releases.releaseName from news left join states on news.ColumnsId = states.StateId and news.NewsType = states.StateId left join releases on news.Status = releases.releaseId;
由于是左连接(left join),当右边表(states,releases)有而左边表没有的记录会查不出来;而左边有,右边没有的,右边表的信息会显示空白(null)。 参考技术A 哪个关键字段?也许是left join的缘故,或者换full join 试试 参考技术B 将LEFT换成INNER试试看
不知道你要的最终结果是怎么样的
结合真实的测试实例,记录一次SQL语句辅助功能测试的场景(包含多表联查及子查询)
本文结合实例讲解一下 SQL 语句通过数据库辅助进行功能测试。希望阅读本文的小伙伴,能通过这个场景实例体会到SQL 语句在真实的功能测试时起到的作用
本次功能测试涉及的sql 知识点如下:
1 SELECT 查询
2 where 子句
3 count()
4 to_char()
5 group by
6 order by
7 两表联查(这里涉及left join)
8 子查询嵌套
实例中的需求文档 :
系统的测试界面:(不好意思,写文章的时候,想去截一个好一点的图片,测试环境无法登录了)
前提解释:
这个报表展示的对所有流程的延时次数和审批次数的统计结果。
由于流程数据没有办法通过前台报表统计验证, 在测试的时候要借助于数据库进行查询验证。
思路:
1 查询出按4列字段分组统计的审批次数
2 查询出按4列字段分组统计的延时次数
3 分别验证界面展示和查询结果是否一致
4 验证降序排列(用order by 语句排序验证结果顺序和界面是否一致)
扩展:
通过两表联查将审批次数,延时次数合并在一个结果里(left join 用法 及子查询嵌套)
(其实完成单句查询也能完成本次功能的验证,时间允许也为了强化两表查询及子查询嵌套功能的运用,增加语句扩展)
语句及运行结果:
审批次数:
延时次数:
两表联查及子查询(left join)
之所以选择left join 是因为 右表 延时次数 的统计范围比 左表 审批次数 要窄,流程总表里的数据每一条都会被分组统计到 审批次数, 但是 只有 IS_TIMEOUT 这个字段为true 的才会统计
比如一个分组行中 该字段全是false 就是空所以看到延时数据 有的是null
以上是关于我这个SQL语句进行多表联查时为啥关联字段查不出来?的主要内容,如果未能解决你的问题,请参考以下文章