2015-06-19 49 views
-1

對於可怕的問題標題的道歉,不確定如何更好地表達它。Oracle查詢鏈接來自映射到映射表的相同表中的記錄

所以開始。

**Table Dummy_Table** 
id  description  filter_key 
1  Test Record1 filterkey1 
2  Test Record2 filterkey1 
3  Test Record1 filterkey2 
4  Test Record2 filterkey2 

The records with filterkey1 map to a table like this 

**Table Mapping_table** 
Dummy_Table_id someother_key (one(Dummy_Table_id) to many(someother_key) 
    1     x 
    1     y 
    1     z 
    1     r 
    2     y 
    2     r 

現在:在查詢我映射使用說明標識的彼此在Dummy_Table,所以我結束了這樣一個結果

id_for_filter_key1   id_for_filterkey2 
     1       3 
     2       4 

好了,這就是所有的好,好,這是我有一個問題with.I需要將記錄添加到表Mapping_table這應該結束這樣看

**Table Mapping_table** 
Dummy_Table_id someother_key 
     3    x 
     3    y 
     3    z 
     3    r 
     4    y 
     4    r 

因此,在本質下一步是什麼以前的ID是爲filterKey1我想申請它的someother_key到的ID與filterkey2(filterKey1和filterkey2與他們的描述相互關聯)

現在我不知道我是否過於複雜this.I'我會告訴你我的問題是什麼。

我在數據庫中記錄了映射到映射表的filterkey1。後來我用filterkey2添加了這些記錄。這些行只是與另一個過濾器鍵重複。現在我需要使用filterkey2將相同的映射應用於記錄

更改表結構不是一個選項atm.I需要給DBA插入查詢來實現這一點。

非常感謝提前。

+0

您需要解釋這些lette背後的邏輯RS。 –

回答

0

這個查詢給出缺失值:

SELECT d.id_for_filterkey2, m.someother_key 
FROM Mapping_table m 
JOIN Dummy_Table d ON m.Dummy_Table_id = d.id_for_filter_key1 

演示:http://sqlfiddle.com/#!4/61ddfe/2

當我們缺少值,則我們可以將它們合併爲Mapping_table:

MERGE INTO Mapping_table m 
USING( copy-the-above-query-and-paste-it-here) x 
ON (x.id_for_filterkey2 = m.Dummy_Table_id) 
WHEN NOT MATCHED THEN 
INSERT(Dummy_Table_id, someother_key) 
VALUES(x.id_for_filterkey2, x.someother_key); 

演示:http://sqlfiddle.com/#!4/d74304/3

+0

看起來很有前途,當我開始工作時會試用。謝謝 – vanzylv