【问题标题】:SQL syntax at joining 2 tables via aliases for resulting tables?通过别名为结果表连接 2 个表时的 SQL 语法?
【发布时间】:2014-03-10 07:42:36
【问题描述】:

我正在尝试理解 SQL。我按照下面的逻辑是正确的吗?我可以像这里一样使用括号吗?

-- 1
(table1) inner join (table2) on ( ??? )

-- 2
(table1 as a) inner join (table2 as b) on (a.col1 = b.col1)

-- 3
((select ... from ... where ...) as a)
    inner join
((select ... from ... where ...) as b)
    on (a.col1 = b.col1)

这对我不起作用。


我失败的查询:
((select CREATEDATE, BELEGNRRECH, MNR, UTNR, KTXT
from INFOR.RELFBR
where (SAINT = '90') and (CREATEDATE >= '01.01.14 00:00:00')) as a)
    inner join
((select ANR, MNR from INFOR.RELXDB where (SAINT = '10')) as b)
    on (a.MNR = b.MNR)

-- error message: ORA-00907: missing right parenthesis

我正在使用 C# 发送 SQL 查询:

string q1 = "select CREATEDATE, BELEGNRRECH, MNR, UTNR, KTXT from INFOR.RELFBR " +
    "where (SAINT = '90') and (CREATEDATE >= '" + date.ToString("dd.MM.yy HH:mm:ss") + "')";
string q2 = "select ANR, MNR from INFOR.RELXDB where (SAINT = '10')";
string query = "(" + q1 + ") as a inner join (" + q2 + ") as b on (a.MNR = b.MNR)";

// q1 and q2 work, not query

【问题讨论】:

    标签: sql join syntax inner-join


    【解决方案1】:
    inner join
    ((select ANR, MNR from INFOR.RELXDB where (SAINT = '10')) as b)
        on (a.MNR = b.MNR)
    

    应该是

    inner join
    (select ANR, MNR from INFOR.RELXDB where (SAINT = '10')) as b
        on (a.MNR = b.MNR)
    

    括号中的选择应该在ON中使用别名

    【讨论】:

    • 对我也不起作用。错误:ORA-00933: SQL command not properly ended
    【解决方案2】:

    试试这个代码,

    SELECT RE.CREATEDATE, RE.BELEGNRRECH, RE.MNR,RE.UTNR, RE.KTXT,REL.ANR, REL.MNR FROM 
    INFOR.RELFBR RE INNER JOIN INFOR.RELXDB REL  ON RE.MNR = REL.MNR 
    WHERE RE.SAINT = '90' AND RE.CREATEDATE >= '01.01.14 00:00:00' AND  REL.SAINT = '10'
    

    【讨论】:

    • 错误:ORA-00923: FROM keyword not found where expected
    • 嗯,当我读到它时,它对我来说很有意义。但我仍然得到错误。这次:ORA_00933: SQL command not properly ended
    • 是否说明问题出在哪里?
    • 不,我使用 C# 发送查询。它告诉我没有错误。
    • 你用的是什么oracle客户端?
    猜你喜欢
    • 2013-09-03
    • 2022-12-22
    • 2015-09-01
    • 2023-03-23
    • 1970-01-01
    • 2021-01-29
    • 2021-12-14
    • 1970-01-01
    • 2020-03-19
    相关资源
    最近更新 更多