Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.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
Oracle 获取所有结果的查询(包括当条件不满足时)_Oracle - Fatal编程技术网

Oracle 获取所有结果的查询(包括当条件不满足时)

Oracle 获取所有结果的查询(包括当条件不满足时),oracle,Oracle,我正试图通过这些查询得到一个计数。我希望它向我显示所有nameHost(尽管计数为0),但使用这些查询。没有where子句我没有任何问题,但是where子句没有显示主机g的名称。你能帮我吗 表格示例: nodes ======= nameHost nodeid --------- ------- a a b b b f e e g

我正试图通过这些查询得到一个计数。我希望它向我显示所有nameHost(尽管计数为0),但使用这些查询。没有where子句我没有任何问题,但是where子句没有显示主机g的名称。你能帮我吗

表格示例:

nodes         
=======
nameHost        nodeid
---------       -------
a               a
b               b
b               f
e               e
g               g


jobsDefinition
================
node_id        job_name      app
----------     -----------   ---
a               fruit        one
b               apple        two
c               iron         three
a               banana       four
f               orange       four
g               gold         five
产出将是:

a 2 (fruit,banana)
b 2 (apple,orange)
e 0
***g 0 --> **this record not show me*****
这是我的密码

  SELECT n.namehost,
         COUNT (jd.node_id) AS Cnt,
         LISTAGG (jd.job_name, ',') WITHIN GROUP (ORDER BY 1) JB_NM
    FROM nodes n 
    LEFT JOIN jobdef jd 
    ON n.nodeid = jd.node_id
--sentence where
WHERE APP NOT LIKE 'five' 
GROUP BY n.namehost
ORDER BY namehost;

谢谢,对不起我的英语

使用
ON
子句中的条件,而不是
where

  SELECT n.namehost,
         COUNT (jd.node_id) AS Cnt,
         LISTAGG (jd.job_name, ',') WITHIN GROUP (ORDER BY 1) JB_NM
    FROM nodes n 
    LEFT JOIN jobdef jd 
    ON n.nodeid = jd.node_id
AND APP NOT LIKE 'five' 
GROUP BY n.namehost
ORDER BY namehost;

使用
ON
子句中的条件,而不是
where

  SELECT n.namehost,
         COUNT (jd.node_id) AS Cnt,
         LISTAGG (jd.job_name, ',') WITHIN GROUP (ORDER BY 1) JB_NM
    FROM nodes n 
    LEFT JOIN jobdef jd 
    ON n.nodeid = jd.node_id
AND APP NOT LIKE 'five' 
GROUP BY n.namehost
ORDER BY namehost;

非常感谢!!!它起作用了!那么,where-outside-on和inside-on有什么区别呢?@defekas17将外部连接操作看作是分三个阶段完成的。首先是具有相同ON条件的内部联接;然后添加更多行以进行“外部”连接;然后应用WHERE子句中的条件。如果条件涉及“第二个”表中的列,“外部”联接行的这些列将为null,因此在大多数情况下,WHERE条件将拒绝这些行。如果要保留“外部”联接行,请在ON子句中检查这些条件。ON和WHERE之间的差异是当条件被强制执行时-在“外部”之前或之后bit@mathguy:谢谢。我解释得再清楚不过了谢谢!!!它起作用了!那么,where-outside-on和inside-on有什么区别呢?@defekas17将外部连接操作看作是分三个阶段完成的。首先是具有相同ON条件的内部联接;然后添加更多行以进行“外部”连接;然后应用WHERE子句中的条件。如果条件涉及“第二个”表中的列,“外部”联接行的这些列将为null,因此在大多数情况下,WHERE条件将拒绝这些行。如果要保留“外部”联接行,请在ON子句中检查这些条件。ON和WHERE之间的差异是当条件被强制执行时-在“外部”之前或之后bit@mathguy:谢谢。我解释得再清楚不过了