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