解决下sql语句,我的老是报ORA-00904:"T"."ORDERID":invalid identifier(字段名错误)

kn198734 2010-11-04 10:05:47
select t.orderid,
decode(t.orderstates,'1000000001','失败交易','1000000002','失败交易','1000000003','失败交易','1000000004','可疑交易','1000000005','可疑交易','1000000006','可疑交易','1000000007','成功交易','1000000008',decode(d.chargflag,'0','审批通过,未充值','1','补充值完毕','3','补充值失败'),'1000000009','退款处理中','1000000010','退款失败','1000000011','退款成功','1000000012','退款失败','1000000013','退款失败','1000000014','退款失败') orderstates
from v_Tlbankorder t,
(select cityid,cityname from bicityinfotb) b,
(select yktid , fullname from biyktinfotb)c,
(select orderid,chargflag from tlrepairchargetb where t.orderid=orderid) d where 1=1 and orderstates<>'1000000001' and userid=147
and t.cityid=b.cityid(+) and t.yktid=c.yktid(+)

标红的就是出问题的地,我不知道(select orderid,chargflag from tlrepairchargetb where t.orderid=orderid) d 的where t.orderid怎么与tlrepairchargetb 里的orderid关联,求高手指点


...全文
832 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
kn198734 2010-11-04
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 yy_mm_dd 的回复:]
你的t.orderid怎么会有呢。
(select orderid,chargflag from tlrepairchargetb where t.orderid=orderid) d
你的这个语句是访问不到你外面设置的别名t的。
你要不修改成
(select k.orderid,k.chargflag from tlrepairchargetb k, v_Tlbankorder j w……
[/Quote]


这个我知道,但是这样查出来的数据是一条重复了好几回
kn198734 2010-11-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 anly_hz 的回复:]
v_Tlbankorder 这个表里面确定有orderid字段吗
[/Quote]
这个我知道,但是这样查出来的数据是一条重复了好几回
lxyzxq2008 2010-11-04
  • 打赏
  • 举报
回复

(select orderid,chargflag from tlrepairchargetb where t.orderid=orderid) d
你在里面不可以访问外面的t表,你可以把这个where条件加到外面去,在外面用t表的orderid和tlrepairchargetb的orderid字段进行关联就可以了
YY_MM_DD 2010-11-04
  • 打赏
  • 举报
回复
你的t.orderid怎么会有呢。
(select orderid,chargflag from tlrepairchargetb where t.orderid=orderid) d
你的这个语句是访问不到你外面设置的别名t的。
你要不修改成
(select k.orderid,k.chargflag from tlrepairchargetb k, v_Tlbankorder j where j.orderid=k.orderid) d

anly_hz 2010-11-04
  • 打赏
  • 举报
回复
v_Tlbankorder 这个表里面确定有orderid字段吗
YY_MM_DD 2010-11-04
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 kn198734 的回复:]
引用 2 楼 yy_mm_dd 的回复:
你的t.orderid怎么会有呢。
(select orderid,chargflag from tlrepairchargetb where t.orderid=orderid) d
你的这个语句是访问不到你外面设置的别名t的。
你要不修改成
(select k.orderid,k.chargflag from tlrepairchargetb……
[/Quote]
那你用distinct去掉重复的呀。。
youshang444 2010-11-04
  • 打赏
  • 举报
回复
select orderid,chargflag from tlrepairchargetb where t.orderid=orderid) d
where 1=1 and orderstates<>'1000000001' and userid=147
谁能告诉我这里的where 1=1加上去有什么用啊,对oracle常量谓词的用法好迷惑啊。。。

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧