oracle - SQL查询( Oracle SQL )

  显示原文与译文双语对照的内容

我需要对下面的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条款,但是为什么有一个的伙伴 R 和英镑的合作伙伴k? 这是否意味着表 NAME 是"合作伙伴 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 mean

时间: 原作者:

合作伙伴 R 和合作伙伴k

你可以参考这个答案在同一表上最好的方式是 Join

( + ) 在做什么?

请参考 OMG的答案。

因为 ANSI-89 格式( 使用from子句中的逗号分隔表引用) 没有标准化外部连接,所以它是外部 Join的特定表示法。

查询将以 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 值为 null,则返回 0作为默认值

...