Consulta multitabla en access

Tengo un problema al realizar un consulta en access, tengo varias tablas en donde manejo información de visitantes a puntos culturales, una por cada año, donde contiene información de visitantes x mes y el total anual, así mismo cada punto tiene su clave del estado donde se ubica, la cual la tengo relacionada con otra tabla con el nombre de los estados, lo que requiero es una consulta en donde pueda desplegar los datos de un mes cualquiera o bien del total anual, extraido de cada año, es decir que aparezca el estado y el total 2005, 2006, 2007, etc. La cuestión es que cuando hago la consulta como la describo a continuación: SELECT Estados.ESTADO, Sum(Visit_05.ene_tot) AS SumaDeene_tot, Sum(Visit_06.ene_tot) AS SumaDeene_tot1, Sum(Visit_07.ene_tot) AS SumaDeene_tot2
FROM ((Estados INNER JOIN Visit_05 ON Estados.CVE_EDO = Visit_05.CVE_EDO) INNER JOIN Visit_06 ON Estados.CVE_EDO = Visit_06.CVE_EDO) INNER JOIN Visit_07 ON Estados.CVE_EDO = Visit_07.CVE_EDO
GROUP BY Estados.ESTADO; el resultado en realidad es mucho más alto de lo que realmente tiene cada año, por que me repite los valores. Espero haber sido claro en mi planteamiento y te agradezco de antemano.

1 Respuesta

Respuesta
1
Veamos, estas haciendo un select sobre una ¿Tabla o consulta base? Con algunas opciones de totales(porque me estas poniendo una tabla o consulta Estado en FROM con un join en claves con Visit_05, Visit_06 y Visit_07 con opción de agrupamiento de estado).
Te van a salir muchos porque quizás hay varios registros de estados en 'Estados', entonces podría solucionarse de alguna manera así:
1. Utiliza la palabra reservada DISTINTC o DISTINTCTROW luego de SELECT, por ahí puede que sea eso (casi estoy seguro). Aparentemente con eso no debería repetir los valores. Esas opciones lo puedes acceder desde la vista diseño de tu consulta, haciendo click derecho en cualquier parte del área de tablas y luego click en propiedades.
2. Utiliza el modo diseño y utiliza las 'Propiedades de combinación' haciendo click en las uniones de claves entre tus tablas en tu consulta, pudiendo incluir: solo las filas iguales, todos los datos de la tabla A y solo los iguales de la B, y todos de la B y solo los iguales de la A.
Prueba con lo que te comenté anteriormente y me lo comentas luego para ir buscando soluciones a lo que pretendes.
Acabo de intentar la primera opción que me comentas tanto con valores únicos como con registro únicos, tal como me los comentas con DISTINTC y DISTINTCTROW, no obstante el resultado es el mismo, me sigue duplicando registros, con relación a la segunda opción que me propones ya lo había intentado, con el mismo resultado excepto elegiendo todos los registros de tabla b y sólo los coincidentes para tabla a, donde el error que me refleja es el siguiente: "No se pudo ejecutar la instrucción SQL porque contiene combinaciones externas ambiguas. Para forzar que se ejecute primero una de las combinaciones, cree una consulta independiente realice la primera combinación y después incluya esa consulta en la instrucción SQL". Te agradezco y sigo pendiente de tu valiosa ayuda.
Saludos
El error marca por el hecho que tienes una combinación que incluye todos los de B y solo los coincidentes de la A y las demás tienes combinadas a un solo registro. Prueba combinando todos los de b a a, todos los de c a a, y todos los de d a a. Combina todas tus demás tablas a un solo registro de la tabla 'Estado'. Más o menos así:
tabla a <-- Tabla b
tabla a <-- Tabla c
tabla a <-- Tabla d
Todas las combinaciones deben ser iguales, o difícilmente pueda funcionar tu consulta.
Avisame nuevamente con ello.
Ok, teniendo en cuenta que mi "tabla a" es la de los estados y la "b", "c", "d", etc. corresponden a cada año, hice la relación tal como me lo pides, sin embargo al ejecutar la consulta el resultado vuelve a ser este: "No se pudo ejecutar la instrucción SQL porque contiene combinaciones externas ambiguas. Para forzar que se ejecute primero una de las combinaciones, cree una consulta independiente realice la primera combinación y después incluya esa consulta en la instrucción SQL".
Te comento que para algunos años hay estados que tienen un registro variable es decir a veces puede tener 10 puntos que reportan visitantes y otro año puede tener 9 u 8, etc. no se si eso tenga algo que ver en todo esto.
Sigo a atento a tus comentarios y gracias nuevamente.
En realidad tu debes tener en el resultado de tu consulta algo como:
Estado, SumaDeene_tot, SumaDeene_tot1, SumaDeene_tot2 (segun los datos que me enviaste en tu consulta)
Creo que alguna propiedad de tu consulta no está bien establecida.
Ahora bien, si los demás datos que no sean Estado provienen de alguna consulta externa, lo mismo debería de funcionar aunque te recomiendo que si proviene de alguna consulta verifiques las conexiones en tus otras consultas base. Si proviene de alguna tabla debes verificar la relación entre tablas, sería verificar que sea 'uno a varios' partiendo de tu tabla Estado.
Verifica lo que te dije, y luego me avisas.
Efectivamente el resultado de la consulta es como la refieres Estado, SumaDeene_tot, SumaDeene_tot1, SumaDeene_tot2, ninguno de los datos que intervienen en esta consulta provienen de alguna otra consulta externa, y por otro lado ya verifique la relación de las tablas de tal modo que en todas sea de uno a varios partiendo de la tabla de estados, no obstante el resultado es el mismo, me duplica registros en todos aquellos estados que reflejan más de un museo.
Espero no ser muy fastidioso pero pensé que se trataba de una situación que no sería tan complicada.
Gracias y saludos
Con los datos que me refieres armé una bd y a mi me sale sin problemas tal como te lo dije haciendo cambio en el tipo de combinación y puse como "Todos los registros de Estado, y solo aquellos en que los campos sean iguales" para cada una de las otras tablas. Incluso me sale '0' en los campos que no hay registros relacionados, y solo la suma de los campos que son distintos a nulo. En la tabla Estado he utilizado valores únicos como indice tipo integer con relación uno a varios con las demás tablas.
No sé qué podría ser el problema, quizás estés tomando algún dato que duplica algún registro de Estado. O podría ser también que exista otro código o id que relaciona tus tablas entre sí por fuera y por eso no te permita hacer la consulta. Verifica nuevamente tus índices y los primary key.
Genera una nueva consulta probando cada parte, primero Estado con una de tus tablas, verificando que haga la consulta, y así sucesivamente hasta tomar todas tus tablas y que se ejecute la consulta.
Te agradezco mucho tu tiempo y atención que pusiste a mi duda, desafortunadamente intenté nuevamente todo como me lo índicas con el mismo resultado, la única forma que encontré para solucionarlo es ir pegando los resultados en consultas intermedias, no se que hice mal en mi base, pero no puede ser tan automatizada.
De cualquier forma me sirvieron tus tips un saludo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas