2015-05-13 36 views
1

我需要對Oracle 11數據庫運行SQL查詢,該查詢將檢索記錄,其中一條記錄本身具有包含自動生成的單獨列的值同一個表中的一個或多個其他記錄的ID。sql查詢找到包含同一個Oracle表中其他記錄的ID的記錄

因此,在表中的記錄將是這個樣子:

| FOREIGN_PARTY_ID | ORG_NAME | RELATED_PARTY_ID1 | RELATED_PARTY_ID2 | ... 
| 1001    | null  | null    | null    | ... 
| 1002    | null  | null    | null    | ... 
| 1003    | null  | null    | null    | ... 
| 1004    | null  | null    | null    | ... 
| 1005    | ABC, INC. | 1001    | 1002    | 1003  | 1004 
+0

可能是'UNION'(http://docs.oracle.com/cd/B19306_01/server.102/b14200/queries004.htm)是你在找什麼。但如果你提供更詳細的例子,它會好得多... – Trinimon

+0

我的歉意,應該補充說。輸出將顯示在具有輸出標籤的primeface表單中,並且它們各自的輸入字段包含通過該查詢從數據庫中檢索的信息。因此,例如,輸出標籤/輸入字段將是** Organization:ABC,INC。**,另一個將是** First Name:John Last Name:Doe **等等......返回的記錄將被存儲在一個列表中,我將隨後在primefaces表單中填充相應的字段。我希望這有幫助! – Randy

+0

謝謝你們的回覆。 @Trinimon:我會查看鏈接。再次感謝! – Randy

回答

1

這個查詢將返回在你的表,其中包含從FOREIGN_PARTY_ID在至少一個RELATED_PARTY_IDn場自動生成的ID的所有行:

SELECT 
    t.*, 
    t1.*, /* actually, you can specify only fields you need */ 
    t2.*, 
    ..., 
    tn.* 
FROM YOUR_TABLE_NAME t 
LEFT JOIN YOUR_TABLE_NAME t1 ON t1.RELATED_PARTY_ID1 = t.FOREIGN_PARTY_ID 
LEFT JOIN YOUR_TABLE_NAME t2 ON t2.RELATED_PARTY_ID2 = t.FOREIGN_PARTY_ID 
... 
LEFT JOIN YOUR_TABLE_NAME tn ON tn.RELATED_PARTY_IDn = t.FOREIGN_PARTY_ID 
WHERE 
    t1.FOREIGN_PARTY_ID IS NOT NULL 
OR t2.FOREIGN_PARTY_ID IS NOT NULL 
OR ... 
OR tn.FOREIGN_PARTY_ID IS NOT NULL 

如果你想獲得僅包含EVERY RELATED_PARTY_IDn字段中輸入您的ID行,你可以通過AND更改WHERE條件OR

+0

非常感謝您的支持! 「挑戰」是所有或一個或多個RELATED_PARTY_ID字段可能爲空。最終用戶可以選擇不輸入任何數據,或者完成一個或多個字段(綁定到RELATED_PARTY_ID),因此這些字段中的任何一個都可以爲空,或者包含數據。換句話說,它不是一個簡單的事情,無論是全部還是沒有填充字段。無論如何,在Trinimon關於使用UNION的建議和現在您的詳細信息之間,我有一些想法可以解決。再一次感謝你!!!!! :-) – Randy

+0

不要提到它) – denied

+0

嗨@denied,還有一個問題。您的查詢工作正常,除了我需要一條記錄 - 包含來自其他記錄的FOREIGN__PARTY_IDs的RELATED_PARTY_IDn ID的記錄。如果你回到我的原始圖表,這是FOREIGN_PARTY_ID爲** 1005 **的行,以及** ABC,INC。**的ORG_NAME。我將它稱爲「主」行,因爲實際上,它具有其他行的FOREIGN_PARTY_IDn,位於此「主」行的RELATED_PARTY_IDn列之一下。再次感謝! – Randy

相關問題