我有3個表格,一個表示「超類型」,帶有一個ID列。另外兩個表是每個子類型,ID列是超類型表的外鍵,另外還有一個子類型專用列。如何根據連接哪個表來創建一個sql結果集來創建行的文字結果?
我想要一個返回所有數據的查詢,以及一列可以用作判別器的列,告訴我該行來自哪個表。
因此,例如,我怎麼能修改此:
SELECT * from SUPER S
left outer join SUB_1 S1 on S.ID = S1.ID
left outer join SUB_2 S2 on S.ID = S2.ID
它返回我:
ID SUB_COL_1 SUB_COL_2
==== ========= =========
0001 value x NULL
0002 value y NULL
0003 NULL value z
到的東西,將與一些硬編碼的文字值加鑑別列,像這樣:
ID DISCRIMINATOR SUB_COL_1 SUB_COL_2
==== ============= ========= =========
0001 SUBTYPE_1 value x NULL
0002 SUBTYPE_1 value y NULL
0003 SUBTYPE_2 NULL value z
我不允許以任何方式修改數據模型。事實之後,我也不能通過編程測試NULLS來進行任何後期處理。我需要按照原樣處理表格,並生成上面顯示的確切結果集。如果這對答案有任何影響,我正在使用Oracle 11g。
工程就像一個魅力。謝謝! – 2009-11-17 21:37:02
@凱文,總是樂於幫忙! – 2009-11-17 21:37:37