当有多个具有不同列的表时,我想将它们全部添加为一条记录。但是,当其中一个没有记录时, 从其他表中检索的其他记录未显示。如何显示剩余表格的结果?例如,我有三个 有一个目录的表格。假设表A没有记录,表B和C有记录。如何显示这些表的结果(表B和C)?即使表A没有记录。
例如:
Table A
RECN
FNAME
TABLE B
RECN
DATE
TABLE C
RECN
ATTR1
Table CAT
RECN
LABEL
SELECT TA.*,TB.*,TC.*
FROM
(SELECT A.RECN, A.FNAME, CAT.LABEL
FROM A, CAT
WHERE A.RECN= CAT.RECN) TA,
(SELECT B.RECN, B.DATE, CAT.LABEL
FROM B, CAT
WHERE B.RECN=CAT.RECN) TB,
(SELECT C.RECN, C.ATTR1, CAT.LABEL
FROM C, CAT
WHERE C.RECN=CAT.RECN) TC
现在,我正在获取一个空行,但我必须显示包含值的表的值。
提前感谢您的帮助
答案 0 :(得分:0)
使用LEFT JOIN
。此外,子查询 - 虽然不是问题 - 不是必需的。实际上,您的JOIN
语法错误。以下是查询的外观:
SELECT A.RECN, A.FNAME, CAT.LABEL,
B.RECN, B.DATE, CAT.LABEL,
C.RECN, C.ATTR1, CAT.LABEL
FROM TA LEFT JOIN
TB
ON B.RECN = CAT.RECN LEFT JOIN
TC
C.RECN = CAT.RECN;