Oracle SQL-从一个表中查询两个条件



我需要通过两个条件从表中选择数据

我有四张桌子

交易

已支付
123
456
789

这里的问题是您的子查询与主查询不相关,它不引用任何外部查询表。如果您自己运行它,您会注意到它返回2行。

select i.amount
from tranid t
inner join info i on t.tranid = i.tranid
and t.payed = 'yes'
and i.contractname = 'finance'

此外,当您在查询中多次引用同一个表时,最好为每个表使用不同的别名,这样您就可以将它们区分开来。

这里有一个相对较小的更改,应该可以让您的查询工作:

select t.tranid,
(select i2.amount
from info i2 
where i2.tranid = i.tranid
and i2.contractname = 'finance') as "Amount",
c.currencyname as "Account currency"
from tran t
inner join info i on t.tranid = i.tranid
inner join account a on i.accountid = a.accountid
inner join currency c on a.currencyid= c.currencyid
and t.payed = 'yes'
and i.contractname = 'card'

尽管如果是我,我根本不会使用子查询——我只会加入info表两次。

select t.tranid,
i2.amount as "Amount",
c.currencyname as "Account currency"
from tran t
inner join info i on t.tranid = i.tranid
and i.contractname = 'card'
inner join info i2 on t.tranid = i2.tranid
and i2.contractname = 'finance'
inner join account a on i.accountid = a.accountid
inner join currency c on a.currencyid= c.currencyid
and t.payed = 'yes'

我真的不理解info表中的currency列,它似乎与currency表不匹配。但我想这与这个问题无关。

最新更新