Ayuda con consultas de access

ermonchi
12 de Febrero del 2004
Tengo un problema con las consultas de agrupacion de access. Cuando cuento algo que quiero agrupar y de ese grupo no hay ningun registro no me aparece el resultado en la consulta y yo quiero que me aparezca en el campo de cuenta el valor de 0. Agradecería mucho que me ayudarais. Gracias.-

Mikel
12 de Febrero del 2004
El problema que tienes es en el enlace de las tablas porque estas generando un INNER JOIN y deberias de realizar un OUTER JOIN.

En access no se como se realiza el OUTER JOIN directamente en la instrucción, pero se me ha ocurrido una pequeña trampa para remediarlo.

Te pongo un ejemplo. Supon que tenemos las siguientes tablas:

Grupos
----------
Codigo
Descripcion

Cantidades
---------------
Grupo
Cantidad

Si lo quieres es sumar las cantidades de la tabla Cantidades agrupadas por Grupo, al realizarlo con el asistente de access te genera la siguiente consulta:

SELECT Cantidades.Grupo, Sum(Cantidades.Cantidad)
FROM Grupos INNER JOIN Cantidades ON Grupos.Codigo=Cantidades.Grupo
GROUP BY Cantidades.Grupo;

Esto hace que no aparezcan los grupos que no tienen cantidades. La solución correcta sería convertir el INNER JOIN en OUTER JOIN, pero como te he dicho en access no se como se hace.

Una solución semi-chapuza que se me ocurre es la de hacer una consulta con una subconsulta. Te indico cual sería la consulta con las mismas tablas anteriores:

SELECT Codigo, Descripcion, (SELECT Sum(Cantidades.Cantidad) FROM Cantidades WHERE Cantidades.Grupo = Grupos.Codigo)
FROM Grupos;

De esta manera estamos haciendo una consulta de todas las filas de la tabla Grupos y por cada una de las filas hacemos una consulta de la tabla Cantidades de ese grupo.

Espero haberme explicado con la pedazo de chapa que he metido.

Saludos desde Euskal Herria.


Mikel

pedro
12 de Febrero del 2004
para hacer el outer join desde access, cuando muestres las dos tablas a unir y generes la linea de correspondencia entre un campo de una tabla y el otro ( el on del outer join), pica con el botón derecho y especifica de que tabla vas a mostrar todas las filas, Access termina generando el outer join correspondiente.

bye bye