查询多个INNER JOINS,难以避免重复

时间:2014-06-26 10:38:23

标签: sql vba ms-access-2007

我有一个ACCESS BD,其主表(' Principale')与另一个(' TabRegisti')有多对多连接,并带有连接表他们之间(' TabRegisti_Unione')。 我是“原理”的表格。其中有一个搜索按钮,在用户单击后,为另一个表单中的列表框创建查询。 我使用的查询如下:

SELECT Principale.ID, Principale.CodiceDVD, Principale.Cofanetto, 
       Principale.TitoloDVD, TabRegisti.NomeRegista, TabRegisti.CognomeRegista,
       TabCategoria.Categoria, Principale.Durata, Principale.AttoriPrincipali,
       Principale.Produzione, Principale.AnnoDVD, Principale.AnnoFilm, 
       Principale.DataACQ, Principale.Ubicazione 
FROM TabRegisti 
INNER JOIN (TabCategoria 
            INNER JOIN ((Principale INNER JOIN TabUbicazione 
                         ON Principale.Ubicazione = TabUbicazione.Ubicazione) 
                         INNER JOIN TabRegisti_unione 
                         ON Principale.ID = TabRegisti_unione.IDrifPrincipale) 
            ON TabCategoria.CategorieID = Principale.CategorieID) 
ON TabRegisti.IDRegista = TabRegisti_unione.IDregistaUnione 
WHERE (((TabRegisti.NomeRegista) Like "*anc*") 
AND ((TabRegisti.CognomeRegista) Like "*")) 
ORDER BY Principale.CodiceDVD;

我在VBA中使用具有正确语法的查询(当然,Where子句只是一个示例)。 它工作正常,但留下了主表记录的重复。 我试图插入条款DISTINCT,然后插入条款DISTINCTROW,但没有任何机会(重复仍然存在)。 否则,在子句ORDER BY之前使用GROUP BY子句(即' GROUP BY Principale.CodiceDVD')会产生错误。 Suggstions?

希望对这个问题的解释足够清楚(我不是英语母语,所以是嗜好者)。

1 个答案:

答案 0 :(得分:0)

DISTINCT将仅在您的选择字段中显示具有不同值的行。您选择的字段行实际上不能相同。您需要从SELECT字段中删除您可能不需要的字段,并生成您不希望看到的行。