sql - 顶尖。如何也输出 NULL 值?
问题描述
我有一个与 apex 中的交互式表相关的单个 sql 查询的问题
在这里,看,我规定了一个请求,其中我打印数据库中所有现有的艺术家,但我只有所有字段都有值的条目,并且其中至少有一个 NULL 没有显示
select artist.name as "Artist", country.name as "Country" , city.name as "City of foundation", label.name as "Label of records"
from artist, country, city, label
where artist.country = country_id
and artist.city = city_id
and city.country = country_id
and artist.label = label_id
如何解决?
解决方案
由于您没有提供测试用例(屏幕截图还不够——至少对我来说不是),我将尝试展示使用 Scott 的模式可能会发生什么。
有 4 个部门:请注意部门 40,以及没有人在其中工作的事实:
SQL> select * from dept;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
SQL> select * from emp where deptno = 40;
no rows selected
如果要显示所有 4 个部门和在其中工作的员工,则需要加入 EMP 和 DEPT 表。外部联接允许您显示部门 40(如我们所见,该部门没有员工):
SQL> select d.deptno, d.dname, e.ename
2 from dept d left join emp e on e.deptno = d.deptno --> outer join is here
3 order by d.deptno;
DEPTNO DNAME ENAME
---------- -------------- ----------
10 ACCOUNTING CLARK
10 ACCOUNTING MILLER
10 ACCOUNTING KING
20 RESEARCH JONES
20 RESEARCH SMITH
20 RESEARCH SCOTT
20 RESEARCH FORD
20 RESEARCH ADAMS
30 SALES WARD
30 SALES TURNER
30 SALES ALLEN
30 SALES JAMES
30 SALES MARTIN
30 SALES BLAKE
40 OPERATIONS --> this is what you're looking for
15 rows selected.
SQL>
(+)
使用旧 Oracle 的外连接运算符,您会得到相同的结果。不过,您宁愿切换到现代联接并避免使用该运算符。
SQL> select d.deptno, d.dname, e.ename
2 from dept d, emp e
3 where d.deptno = e.deptno (+) --> the old outer join operator
4 order by d.deptno;
DEPTNO DNAME ENAME
---------- -------------- ----------
10 ACCOUNTING CLARK
10 ACCOUNTING MILLER
10 ACCOUNTING KING
20 RESEARCH JONES
20 RESEARCH SMITH
20 RESEARCH SCOTT
20 RESEARCH FORD
20 RESEARCH ADAMS
30 SALES WARD
30 SALES TURNER
30 SALES ALLEN
30 SALES JAMES
30 SALES MARTIN
30 SALES BLAKE
40 OPERATIONS
15 rows selected.
SQL>
推荐阅读
- php - php s3 sdk - 如何获取对象的最新版本
- ruby-on-rails - Rails - 可变模式所需的正则表达式
- flutter - 在 Flutter 中具有最大尺寸的 FractionallySizedBox
- javascript - CSS:将元素定位在悬停或焦点上,但不能同时定位
- javascript - 未处理的拒绝(typeError):无法在谷歌浏览器移动设备上使用 reactjs axios 读取未定义的属性
- ios - didReceiveRemoteNotification not called in iOS 13.3 when app is in background
- excel - 将文件路径添加到键入到另一个单元格 vlookup 的公式中
- go - 服务器或客户端如何知道连接是否断开?
- python - 在 Python 中将“2019-03-15T21:30:00Z”之类的字符串转换为一年
- redis - NestJS 微服务 - Redis - 未连接