我正在尝试编写一个从 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
,但这需要很长时间(请参阅我以前的帖子)。
然后我尝试做一个“或加入”:
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)
)
但这也需要很长时间(仅 FATHER_USER_NAME 和 MOTHER_USER_NAME 需要 22 秒)。
谁能建议为我需要的视图编写查询的最有效方法?我不知道如何使它快速。
仅供参考:使用 Oracle 10g。