我有 4 个表,并希望以最有效的方式返回表,其中键映射到正确的条目。
表 A 列:
[ SVC_PREFIX | SVC_CD | ... ]
表 B 列:
[ SVC_PREFIX | SVC_CD | SVC_ID |... ]
表 C 列:
[ SVC_ID | ... ]
表 D 列:
[ SVC_ID | ... ]
表 A 通过 SVC_PREFIX 和 SVC_CD 映射到表 B 然后表 B 负责通过 SVC_ID 检索表 C 和 D 表 C 和 D 几乎相同,除了表 D 比 C 少一些列 例如,C 可能有一个 isGood 和isSilly 但 D 只会有 isSilly。是否可以检索条目,以便 D 将被提取为 isSilly 的 NULL 值,而 C 将带来相应的数据?
这是一个示例:表 A 列:
[ SVC_PREFIX | SVC_CD | anotherData ]
[ 111 | 123 | AAA ]
表 B 列:
[ SVC_PREFIX | SVC_CD | SVC_ID ]
[ 111 | 123 | 007]
表 C 列:
[ SVC_ID | isGood | isHappy ]
[ 007 | Y | Y ]
表 D 列:
[ SVC_ID | isGood ]
[ 007 | Y ]
我要检索的数据:
[ SVC_PREFIX | SVC_CD | anotherData | SVC_ID | isGood | isHappy ]
实际数据
[ 111 | 123 | AAA | 007 | Y | Y ]
[ 111 | 123 | AAA | 007 | Y | NULL ]
我想将 C 和 D 的表都显示为单独的行。
目前,我有一个隐式连接,但没有达到我想要的结果......
SELECT *
FROM A,B,C,D
WHERE A.SVC_PREFIX = B.SVC_PREFIX
AND A.SVC_CD = B.SVC_CD
AND B.SVC_ID = C.SVC_ID
AND B.SVC_ID = D.SVC_ID
AND C.SVC_ID = D.SVC_ID
谢谢您的帮助!