Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 顶如何输出空值呢?_Sql_Oracle_Oracle Apex - Fatal编程技术网

Sql 顶如何输出空值呢?

Sql 顶如何输出空值呢?,sql,oracle,oracle-apex,Sql,Oracle,Oracle Apex,我有一个关于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, cit

我有一个关于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(如我们所见,该部门没有员工):

使用旧的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>

由于您没有提供测试用例(一个屏幕截图是不够的——至少对我来说不是),我将尝试使用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(如我们所见,该部门没有员工):

使用旧的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>

对不起,你在英语对话板上用俄语发布了信息。堆栈溢出有一个俄语部分,考虑删除这个帖子,然后问你的问题。(或者请别人把你的问题翻译成英语。)“Apex。如何也输出空值?”删除旧的逗号连接用法,它只能进行交叉连接或内部连接,并使用适当的
。。。左连接打开…
syntax就像@Raymond一样,我认为这是您可能需要的外部连接。不过,Raymond,Oracle中的旧逗号连接也支持外部连接-这是
(+)
运算符实现的。“尽管,Raymond,Oracle中的旧逗号连接也支持外部连接-这是(+)运算符实现的”我知道
(+)
Oracle数据库中的操作员@Littlefoot,Oracle自己没有问题,@Raymond。我只是说你的陈述,旧的逗号连接只能做交叉连接或内部连接。嗯,它也可以做外部连接。对不起,你在英语对话板上用俄语发布了。堆栈溢出有一个俄语部分,考虑删除这个帖子,然后问你的问题。(或者请别人把你的问题翻译成英语。)“Apex。如何也输出空值?”删除旧的逗号连接用法,它只能进行交叉连接或内部连接,并使用适当的
。。。左连接打开…
syntax就像@Raymond一样,我认为这是您可能需要的外部连接。不过,Raymond,Oracle中的旧逗号连接也支持外部连接-这是
(+)
运算符实现的。“尽管,Raymond,Oracle中的旧逗号连接也支持外部连接-这是(+)运算符实现的”我知道
(+)
Oracle数据库中的操作员@Littlefoot,Oracle自己没有问题,@Raymond。我只是说你的陈述,旧的逗号连接只能做交叉连接或内部连接。好吧,它也可以做外部连接。还可以看看
(+)
操作符的用法是多么不符合逻辑,因为
(+)
在右侧,你可能会想得到一个
右连接
,而不是
左连接
。当你第一次看到它时……对,@Raymond。有许多限制适用于该运营商;从我的观点来看,最糟糕的缺点是无法将一个表与多个表进行外部连接(难怪Oracle不鼓励使用它)(更多信息请参见:)。此外,还可以看看
(+)
运算符的使用是多么不合逻辑,因为
(+)
在右边,你可能会想得到一个
右连接
,而不是
左连接
。当你第一次看到它时……对,@Raymond。有许多限制适用于该运营商;从我的观点来看,最糟糕的缺点是无法将一个表外部连接到多个表(难怪Oracle不鼓励使用它)(更多信息如下:)。