我想寫一個數據庫視圖,從2個表中選擇。這裏有一個例子:使用多個或語句最大化數據庫視圖
USER_TABLE
- ID
- USER_NAME
FAMILY_TABLE
- ID
- FAMILY_NAME
- FATHER_USER_NAME
- MOTHER_USER_NAME
- GRANDFATHER_1_USER_NAME
... (multiple user name columns)
(表作家沒有通過ID相關聯出於某種原因)
我基本上需要做已每個用戶所列觀點,與家人的名字一起他們屬於。我嘗試了很多東西,但每個都似乎失敗了。
我第一次試圖聯合SELECT
來自FAMILY_TABLE
的陳述,但這永遠持續下去(見my previous post)。
然後我試圖做一個「或加入」:
SELECT ut.USER_NAME, ft.FAMILY_NAME
FROM USER_TABLE ut
LEFT OUTER JOIN FAMILY_TABLE ft ON
(
UPPER(ut.USER_NAME) = UPPER(ft.FATHER_USER_NAME)
OR
UPPER(ut.USER_NAME) = UPPER(ft.MOTHER_USER_NAME)
... (etc)
)
但也需要較長的時間(花了22秒,只是FATHER_USER_NAME和MOTHER_USER_NAME)。
任何人都可以建議最有效的方式來編寫我需要的視圖的查詢?我不知道如何讓它快速。
僅供參考:使用Oracle 10g。在UPPER(USER_NAME)和UPPER(FATHER_USER_NAME),UPPER(ft.MOTHER_USER_NAME)
該查詢你應該工作...?它很慢的原因是UPPER(USER_NAME)上可能沒有索引? –
您是否可以有第三張表格將多個用戶分別鏈接到多個家庭(多對多)? – amphibient
@lc。對不起,錯字。我修好了它。我正在考慮我嘗試過的另一種方法。 –