2012-07-04 5 views
2

하나의 테이블을 두 번 조인 한 다음 각 필드에서 한 필드에 대한 계수를 실행하는 Access 쿼리를 작성하려고합니다.COUNT() 2 Access에서 2 개의 개별 조인이있는 열?

SELECT Wines.wID, 
     Wines.num, 
     Wines.Brand, 
     Wines.wYear, 
     Wines.Variety, 
     Wines.Score, 
     g.fName, 
     g.lName , 
     Count(DISTINCT Votes.vote1) AS Vote1, 
     Count(DISTINCT Votes_1.vote2) AS Vote2 
FROM ((Wines 
      LEFT JOIN Guests AS g 
       ON Wines.wID = g.wineID) 
      LEFT JOIN Votes 
       ON Wines.num = Votes.vote1) 
      LEFT JOIN Votes AS Votes_1 
       ON Wines.num = Votes_1.vote2 
WHERE (((Wines.pID)=2)) 
GROUP BY Wines.wID, Wines.num, Wines.Brand, 
     Wines.wYear, Wines.Variety, Wines.Score, g.fName, g.lName 
ORDER BY Wines.Score DESC , Count(DISTINCT Votes.vote1) DESC; 

그러나 작동하지 않습니다. COUNT(DISTINCT)이 Access에서 작동하지 않는 것 같습니다. 나가면 쿼리가 실행될 수 있지만 올바른 결과를 얻지 못합니다. 한 번 사용하면 문제가 없습니다. COUNT 문에 하위 쿼리를 작성할 수없는 것 외에는 무엇을해야할지 모르겠습니다.

답변

2

MS Access, 하위 쿼리 내에서 작업하는 경우 DCount를 사용할 수도 있고, 카운트 쿼리를 설정하고 조인 할 수도 있습니다. 복제본의 출처에 대해서는 확신 할 수 없으므로 아래의 내용은 몇 가지 아이디어를 설명합니다. 제대로 테스트되지 않았습니다.

SELECT Wines.wID, 
    Wines.num, 
    Wines.Brand, 
    Wines.wYear, 
    Wines.Variety, 
    Wines.Score, 
    g.fName, 
    g.lName , 
    DCount("vote1","votes","vote1"=Wines.num) AS Vote1, 
    (SELECT Count(Vote2) FROM 
     (SELECT DISTINCT vote2 
     FROM votes v 
     INNER JOIN Wines w ON v.vote2=w.Num 
     WHERE w.pID=2 AND w.num=Wines.num)) AS Vote2 
FROM Wines 
      LEFT JOIN Guests AS g 
       ON Wines.wID = g.wineID 

WHERE (((Wines.pID)=2)) 
GROUP BY Wines.wID, Wines.num, Wines.Brand, 
     Wines.wYear, Wines.Variety, Wines.Score, g.fName, g.lName 
ORDER BY Wines.Score DESC , vote1 DESC; 
관련 문제