Oracle ODBC 读取失败并出现左连接
Posted
技术标签:
【中文标题】Oracle ODBC 读取失败并出现左连接【英文标题】:Oracle ODBC read fails with left join 【发布时间】: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 我没有得到错误..
【参考方案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
。这至少会消除重复的列名问题。
成功了!谢谢!我现在有个想法,试着用左连接来做以上是关于Oracle ODBC 读取失败并出现左连接的主要内容,如果未能解决你的问题,请参考以下文章