【发布时间】:2015-12-31 04:06:24
【问题描述】:
我作为 Oracle 有以下查询
SELECT DISTINCT count(pa.payment_id) FROM
location c, inventory e,
inventory_stock es, payment_client ep,
payment pa, currency cur,
location s, exchange_country exc,
exchange_rate sso,
exchange_hike so,
exchange_margin sov WHERE
cur.outState = 'N' AND
c.location_id = e.location_id AND
e.inventory_id = ep.inventory_id AND
e.inventory_stock_id = es.inventory_stock_id AND
ep.client_id = pa.end_client AND
pa.cur_id = cur.cur_id AND
cur.location_id = s.location_id AND
c.client_id is not null AND
cur.cur_id = exc.cur_id(+) AND
exc.exchange_id = sso.exchange_id(+) AND
sso.account_id = so.account_id(+) AND
so.option_name(+) = 'PREMIUM' AND
exc.exchange_id = sov.exchange_id(+) AND
sov.name(+) = 'VALUE';
现在我正在使用 H2 数据库,我得到的语法错误来自 so.option_name(+) 和 sov.name(+); 我知道 (+) 是 oracle 的右连接和左连接方式,但有没有可能的方法将其转换为h2 那么错误和语法是等价的吗?
【问题讨论】:
-
我尝试使用纯连接对其进行转换,但输出不同。并且对所有表使用连接太乱了
-
是的,您可以将其转换为正确的
left join- 您也应该在 Oracle 中这样做。甚至 Oracle 也建议使用left join(或right join)而不是专有的(+)运算符。