【问题标题】:Oracle ODBC read fails with left joinOracle ODBC 读取失败并出现左连接
【发布时间】:2018-09-21 11:25:55
【问题描述】:

我有一个小问题,但它让我非常恼火。 我想离开加入一个表,但我只得到 odbc 读取失败的错误。 当我注释掉左连接块时,查询有效。

我很确定没有错字,我很沮丧..

有什么想法吗?

select 
*
from
SYSADM.KATARTIKEL

left join SYSADM.TBLFALL
on SYSADM.KATARTIKEL.ITBROWID = SYSADM.TBLFALL.ITBROWID

where rownum <= 150;

这是错误 它是德文的..

Fehler beim Lesen über ODBC
select 
*
from
SYSADM.KATARTIKEL

left join SYSADM.TBLFALL
on SYSADM.KATARTIKEL.ITBROWID = SYSADM.TBLFALL.ITBROWID

where rownum <= 150

编辑:这个案例的解决方案是创建别名:

select 
    K.*,

    T.ITBROWID as ITID
from
    SYSADM.KATARTIKEL K

left join SYSADM.TBLFALL T
on K.ITBROWID = T.ITBROWID

where 
    rownum <= 150;

编辑:问题是选择 * 你不能选择任何东西然后再加入!

【问题讨论】:

  • 能否请您发布您的错误
  • 请提供错误文本(如果是异常则提供堆栈跟踪)
  • try select 1 from ...: 让我们返回旧的1 而不是*,仅此而已。你还有错误吗?
  • 与 1 我没有得到错误..

标签: sql database oracle left-join


【解决方案1】:

一个明显的问题是您有重复的列名。我建议您明确列出所有列,但您可以使用此快捷方式:

select k.*, f.col1, f.col2
from SYSADM.KATARTIKEL k left join
     SYSADM.TBLFALL f
     on k.ITBROWID = f.ITBROWID
where rownum <= 150;

当然,您可能还有其他问题,例如 SYSADM.TBLFALL 不存在或 ITBROWID 不在两个表中。

请注意,我还介绍了表别名。我强烈建议您在所有查询中使用表别名和限定列名。

【讨论】:

  • 我需要 col1 和 col2 做什么?
  • 您需要 TBLFALL 的哪些列?
  • 目前只有 ITBROWID
  • 那我建议使用SELECT k.*, f.ITBROWID AS TBLFALL_ITBROWID。这至少会消除重复的列名问题。
  • 成功了!谢谢!我现在有个想法,试着用左连接来做
猜你喜欢
  • 2019-08-04
  • 1970-01-01
  • 2014-10-29
  • 2011-12-31
  • 1970-01-01
  • 2012-05-04
  • 1970-01-01
  • 1970-01-01
  • 2019-06-12
相关资源
最近更新 更多