COUNT () 2 columnas con 2 uniones separadas en Access?

Estoy tratando de escribir una consulta de Access que se una a una sola tabla dos veces, luego cuente un campo de cada uno.

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;

Sin embargo, no funciona. COUNT(DISTINCT) no parece funcionar en Access. Omitirlo permite que se ejecute la consulta, pero no obtengo los resultados correctos. Usarlo solo una vez funciona bien. Parece que no puedo escribir una subconsulta en la instrucción COUNT y no estoy muy seguro de qué más hacer.

preguntado el 04 de julio de 12 a las 02:07

1 Respuestas

Puede usar DCount, si está trabajando en MS Access, una subconsulta, o puede ser posible configurar una consulta de conteo y unirse a ella. No estoy seguro de dónde proviene la duplicación, por lo que las notas a continuación ilustran algunas ideas. No está debidamente probado.

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;

Respondido 04 Jul 12, 11:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.