2017-06-05 59 views
-1

我仍然很清新SQL的一般,所以这可能不是最好的措辞问题。我想从不同的表中获取列。他们没有任何共同的专栏,但有第三张表有能够将它们连接在一起的信息。Oracle SQL多表

这是怎么了,我试着去了解它:

SELECT 
    CI_SA.ACCT_ID, 
    CI_SA.EXPIRE_DT WHERE EXPIRE_DT BETWEEN '15-APR-17' AND '30-APR-17', 
    CI_SP.SP_TYPE_CD WHERE SP_TYPE_CD='G-RES' 
FROM CI_SA 
INNER JOIN CI_SA ON CI_SA.SA_ID = CI_SA_SP.SA_ID AND CI_SP.SP_ID = 
CI_SA_SP.SP_ID 

这是我收到的回报的错误:ORA -00923:FROM关键字未找到预期 00923. 00000 - “FROM关键字未找到预期” *原因:
*动作: 行错误:3栏:18

任何人将能够指出我哪里弄错了?

+2

编辑你的问题,并提供样本数据和所需的结果。你的语法离标准SQL很远,意图不清楚。 –

回答

0

除了其他人所说的,重新。 where子句在错误的地方,你也需要正确地加入你的表。我认为你是在类似的东西:

SELECT CI_SA.ACCT_ID, 
     CI_SA.EXPIRE_DT WHERE EXPIRE_DT BETWEEN '15-APR-17' AND '30-APR-17', 
     CI_SP.SP_TYPE_CD WHERE SP_TYPE_CD='G-RES' 
FROM CI_SA 
     INNER JOIN CI_SA_SP ON CI_SA.SA_ID = CI_SA_SP.SA_ID 
     INNER JOIN CI_SP ON CI_SP.SP_ID = CI_SA_SP.SP_ID 
WHERE CI_SA.EXPIRE_DT BETWEEN TO_DATE('01/04/2017', 'DD/MM/YYYY') AND TO_DATE('30/04/2017', 'DD/MM/YYYY') 
AND CI_SP.SP_TYPE_CD = 'G-RES'; 
+1

感谢您的澄清!我假设我可以将联合组合在一起(事实并非如此)。现在一切都按原样运行 – Huskeh

1

WHERE条件后应from table 例如select * from tab1 where ....

尝试这样的:

SELECT 
    CI_SA.ACCT_ID, 
    CI_SA.EXPIRE_DT , 
    CI_SP.SP_TYPE_CD 
FROM CI_SA 
INNER JOIN CI_SA ON CI_SA.SA_ID = CI_SA_SP.SA_ID AND CI_SP.SP_ID = 
CI_SA_SP.SP_ID 
WHERE EXPIRE_DT BETWEEN '15-APR-17' AND '30-APR-17' 
and SP_TYPE_CD='G-RES' 

也为用户阿图尔通知,你就CI_SA joinin?或CI_SA_SP?如果CI_SA你有太多添加别名,如下面:

INNER JOIN CI_SA CI_SA_SP ...

1

的where子句应该是结尾:

SELECT 
    CI_SA.ACCT_ID, 
    CI_SA.EXPIRE_DT , 
    CI_SP.SP_TYPE_CD 
FROM CI_SA 
INNER JOIN CI_SA ON CI_SA.SA_ID = CI_SA_SP.SA_ID AND CI_SP.SP_ID = 
CI_SA_SP.SP_ID 
WHERE EXPIRE_DT BETWEEN '15-APR-17' AND '30-APR-17' and SP_TYPE_CD='G-RES' 
1

WHERE条款去FROM只有每SELECT出现一次。

也许你打算:

SELECT CI_SA.ACCT_ID, CI_SA.EXPIRE_DT, CI_SP.SP_TYPE_CD 
FROM CI_SA INNER JOIN 
    CI_SA_SP 
    ON CI_SA.SA_ID = CI_SA_SP.SA_ID AND 
     CI_SP.SP_ID = CI_SA_SP.SP_ID 
WHERE CI_SA.EXPIRE_DT BETWEEN DATE '2017-04-15' AND DATE '2017-04-30' AND 
     CI_SP.SP_TYPE_CD = 'G-RES'; 

此外,这所以它是指CI_SA_SP修复FROM条款。我认为这是你原来的查询中的一个错字。另外,我强烈建议使用ISO标准日期格式,因此它使用DATE关键字。

0

首先'选择',然后''和'最后'在哪里'。只允许有一个'WHERE'子句。 加入中重复的CI_SA。您应该使用别名