Sql查询缺少关键字

时间:2012-10-22 22:18:35

标签: sql oracle

继续得到我的SQL查询中缺少关键字的反馈。

select sum(transaction_amnt) 
from cs339.comm_to_cand 
join cs339.committee_master 
join cs339.cmte_id_to_geo 
    on cs339.committee_master.cmte_id=cs339.comm_to_cand.cmte_id 
    and cs339.committee_master.cmte_id=cs339.cmte_id_to_geo.cmte_id 
where cycle=1112 
    and cmte_pty_affiliation='DEM';

如果有人能帮助我,我会很感激。

4 个答案:

答案 0 :(得分:2)

您错过了第一次加入的ON - 我也为此添加了一些别名:

select sum(transaction_amnt) Total
from cs339.comm_to_cand cc
join cs339.committee_master cm
  on cm.cmte_id=cc.cmte_id 
join cs339.cmte_id_to_geo cg
    on cm.cmte_id=cg.cmte_id 
where cycle=1112 
    and cmte_pty_affiliation='DEM';

答案 1 :(得分:1)

第一次加入后没有“开”状态

试试这个:

select sum(transaction_amnt) 
from cs339.comm_to_cand 
join cs339.committee_master 
          on cs339.committee_master.cmte_id=cs339.comm_to_cand.cmte_id 
join cs339.cmte_id_to_geo     
    on cs339.committee_master.cmte_id=cs339.cmte_id_to_geo.cmte_id 
where cycle=1112 
    and cmte_pty_affiliation='DEM';

答案 2 :(得分:0)

我不是Oracle开发人员,但第一个JOIN缺少ON条件。

答案 3 :(得分:0)

好吧,我不知道这是否属实,但我的理解是你需要在每次加入时提供“绑定器”,所以这应该是这样的。

选择总和(transaction_amnt)    来自cs339.comm_to_cand    在cs339.committee_master.cmte_id = cs339.comm_to_cand.cmte_id上​​加入cs339.committee_master    在cs339.committee_master.cmte_id = cs339.cmte_id_to_geo.cmte_id上​​加入cs339.cmte_id_to_geo    其中cycle = 1112和cmte_pty_affiliation ='DEM';

此外,WHERE子句上的列应该以其父表命名,因此如果cycle和cmte_pty_affiliation列属于cs339.comm_to_cand,则它应该是

其中cs339.comm_to_cand.cycle = 1112和cs339.comm_to_cand.cmte_pty_affiliation ='DEM';