我有3张桌子:
C是A和B之间的关联类。这意味着A和B之间存在多对多关系。C还具有其自己的字段,而不是A / B的主键。
我想为给定的A.ID(PK)返回C中的所有字段。现在,此部分可能会向*结果返回0。但是我总是想返回与B中记录相同数目的结果。也就是说,我想用空值来填充A.ID和B(在C中不存在)之间缺失的组合。
我正在尝试在Access中执行此操作。 如果有帮助的话,下面是我尝试使用的带有特定表及其字段的图像。
其中A是ASC,B是飞行,C是FlightHistory。
答案 0 :(得分:2)
您将需要2个查询,一个查询选择B的所有ID以及所需的AID,一个查询选择所有这些组合,并外部连接到C中的现有组合。这可以用一个查询编写(带有子查询):
SELECT AB.AID, AB.BID, C.Desc
FROM (SELECT A.AID, B.BID FROM A, B WHERE (((A.AID)=1))) AB
LEFT JOIN C ON (AB.BID = C.BID) AND (AB.AID = C.AID);
答案 1 :(得分:1)
您可以将两个结果集结合在一起,一个从C获取主要记录,另一个从B获取缺少的记录...
SELECT * FROM C WHERE C.AID = 1
UNION
SELECT 1 as AID, ID as BID, '' as Desc FROM B WHERE ID NOT IN (SELECT BID FROM C WHERE C.AID = 1)
ORDER BY BID;