0
我有一個使用DB鏈接與遠程數據庫連接的Oracle數據庫。我的遠程數據庫與OUTER JOIN無關,這就是爲什麼異構服務將我的查詢轉換爲多個簡單查詢並連接結果的原因。Left使用Oracle Heterogeneous Service加入錯誤轉換
比如我有3個表:
create table join_email
(
EMAIL_ID FLOAT(10)
SENDER VARCHAR2(128)
)
INSERT INTO join_email VALUES (1,'[email protected]')
INSERT INTO join_email VALUES (2,'[email protected]')
create table join_email_receivers
(
EMAIL_ID FLOAT(10)
RECEIVER VARCHAR2(128)
)
INSERT INTO join_email_receivers VALUES (1,'[email protected]')
INSERT INTO join_email_receivers VALUES (1,'[email protected]')
INSERT INTO join_email_receivers VALUES (1,'[email protected]')
INSERT INTO join_email_receivers VALUES (2,'[email protected]')
INSERT INTO join_email_receivers VALUES (2,'[email protected]')
create table join_email_cc
(
EMAIL_ID FLOAT(10)
CC VARCHAR2(128)
)
INSERT INTO join_email_cc VALUES (1,'[email protected]')
我想查詢從1和錶行和左邊EMAIL_ID加入來自第2和第3行。 我的查詢是這樣的:
select em.sender, emr.receiver, emcc.cc
from [email protected] em
LEFT JOIN [email protected] emr on emr.email_id=em.email_id
LEFT JOIN [email protected] emcc on emcc.email_id=em.email_id
where em.sender = '[email protected]' and emr.receiver = '[email protected]';
問題是異構服務轉換此查詢到以下兩個查詢:
<SELECT A2."EMAIL_ID",A2."SENDER",A1."RECEIVER" FROM "JOIN_EMAIL" A2,"JOIN_EMAIL_RECEIVERS" A1 WHERE A1."EMAIL_ID"=A2."EMAIL_ID" AND A2."SENDER"='[email protected]' AND A1."RECEIVER"='[email protected]'>
和
<SELECT "CC","EMAIL_ID" FROM "JOIN_EMAIL_CC">
第二屆查詢是FULL SCAN查詢是錯的,它應該是email_id的WHERE子句。
我的問題是,如何告訴異構服務如何以正確的順序轉換我的查詢?
馬可,THX您的回覆,可惜的是我的遠程RDBMS不支持外連接和意見。還有其他想法嗎? – fen1ksss 2014-10-29 14:57:36
沒人能幫助我? – fen1ksss 2014-10-30 13:06:25