我需要一些有关以下 SQL 查询的帮助:
SELECT AUF_EK.FIRM, AUF_EK.customer, AUF_EK.cnr, k.name1,
k.name2, k.name3, k.street, k.pin, k.loc, r.name1,
r.name2, r.name3, lo_gpname1,
.....
首先是选定的列,到目前为止我已经知道了。
FROM AUFT, PARTNER r, PARTNER k, .... skp_ARTIKEL_Z,
那么我们有 from 子句,但是为什么会有Partner r和Partner k呢?这是否意味着表名是“Partner r”还是我还不知道的其他原因?
WHERE (
AUF.FIRM BETWEEN 123 AND 456 AND AUF.FIRM = k.FIRM AND AUF.customer = k.gpnr AND AUF.FIRM
= k.FIRM AND AUF.customer = k.gpnr AND AUF.art_nr = ART.art_nr
到这里为止,where 子句对我来说很有意义,所以它基本上匹配所选表中的列......
AND EK_POS.art_nr =
ARTIKEL_Z.art_nr(+) AND NVL
(POS.pos_nr_zuo, 0) = (NVL (
_EK_POS_PREIS.pos_nr_zuo(+), 0)) )
但在这里我没有得到的部分。我不是 SQL 专家.... (+)在做什么?什么是,0意思?
合作伙伴 r 和合作伙伴 k
您可以参考这个答案在同一张桌子上加入两次的最佳方法是什么?
(+) 在做什么?
参考OMG Ponies的回答
这是 OUTER JOIN 的 Oracle 特定表示法,因为 ANSI-89 格式(在 FROM 子句中使用逗号分隔表引用)没有标准化 OUTER 连接。
查询将以 ANSI-92 语法重写为:
SELECT ...
FROM a
LEFT JOIN b ON b.id = a.id
还应该注意的是,即使 (+) 有效,Oracle 也建议不要使用它
,0 是什么意思?
NVL(POS.pos_nr_zuo, 0) 如果 POS.pos_nr_zuo 的值为空,则返回 0 作为默认值
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句