2012-08-02 73 views
0

尝试在接收到此错误时在其他两个连接的表上创建外连接 - 我只是看不到如何创建两个单独的查询来使其工作。子查询似乎也不工作,任何帮助表示赞赏。我收到以下查询的错误,谢谢。MS Access中的模糊外连接

SELECT 
    CardHeader.CardID, CardHeader.CardDescription, CardHeader.GloveSize,  
    CardHeader.GloveDescription, CardDetail.Bin, CardDetail.ItemID, Items.ItemDescription, 
    Items.VCatalogID, CardDetail.ChargeCode, CardDetail.Quantity, Items.Cost, CardColors.ColorID 
FROM 
    ((Items 
INNER JOIN 
    (CardHeader INNER JOIN CardDetail ON CardHeader.CardID = CardDetail.CardID) ON Items.ItemID = CardDetail.ItemID) 
LEFT JOIN 
    CardColors ON CardDetail.ItemID = CardColors.ItemID) 
INNER JOIN 
    Colors ON CardColors.ColorID = Colors.ID 
ORDER BY 
    CardHeader.CardID; 

我试图

CardHeader.ID, MainQry.CardID 

SELECT 
    MainQry.ID, MainQry.CardDescription, MainQry.GloveSize, 
    MainQry.GloveDescription, MainQry.Bin, MainQry.ItemID, 
    MainQry.ItemDescription, MainQry.VCatalogID, MainQry.ChargeCode, 
    MainQry.Quantity, MainQry.Cost, SubQry.ColorID 
FROM 
    (SELECT 
     CardHeader.ID, CardHeader.CardDescription, CardHeader.GloveSize, 
     CardHeader.GloveDescription, CardDetail.Bin, 
     CardDetail.ItemID, Items.ItemDescription, Items.VCatalogID, 
     CardDetail.ChargeCode, CardDetail.Quantity, Items.Cost 
    FROM 
     Items 
    INNER JOIN 
     (CardHeader 
    INNER JOIN 
     CardDetail ON CardHeader.CardID = CardDetail.CardID) ON Items.ItemID = CardDetail.ItemID 
    ) AS MainQry 
LEFT JOIN 
    (SELECT 
     CardColors.ItemID, CardColors.ColorID 
    FROM 
     CardColors 
    INNER JOIN 
     Colors ON CardColors.ColorID = Colors.ID) AS SubQry ON MainQry.ItemID = SubQry.ItemID 
ORDER BY 
    MainQry.CardID; 
+0

见http://stackoverflow.com/questions/11734577/ambiguous-left-joins-in -ms-access/11735741#11735741 – Fionnuala 2012-08-02 18:56:13

+0

为什么你得到这行'INNER JOIN颜色ON CardColors.ColorID = Colors.ID'?所有你选择的是'CardColors.ColorID',所以不使用颜色表。 – Fionnuala 2012-08-02 19:05:46

+0

这个CardHeader.ID应该是CardHeader.CardID吗?我觉得是这样的。 – Fionnuala 2012-08-02 19:56:51

回答

1

第二SQL语句可以通过参考第一个语句和误差来校正它运行但对于以下参数询问(它不应该)以下。该错误是,无论CardHeader.IDMainQry.CardID被提示输入参数,这表明内声明应包括:CardHeader.CardID,而不是CardHeader.ID