SQL 查询 (Oracle SQL)

SQL_Not_Freak_Yet

我需要一些有关以下 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 rPartner 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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章