Access - Ayuda con consulta sql

   
Vista:

Ayuda con consulta sql

Publicado por Ana (80 intervenciones) el 24/07/2011 15:07:43
Hola a todos,
Tengo un problema que no parece muy complicado pero que no sé solucionar, y pido ayuda por si alguien sabe cómo se puede hacer.
Tengo dos tablas (maestro-detalle) relacionadas por medio de una clave numérica ID. Por simplificar, podríamos pensar en algo así:

Tabla Maestro: ID

1
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Ayuda con consulta sql

Publicado por Ana (80 intervenciones) el 24/07/2011 15:15:50
Perdón, di sin querer a "Enviar nota"
Continúo:
Tabla Maestro: un único Campo numérico ID
Registros en esta tabla: 1, 2, 3, 4, 5 (cada número, un registro)

Tabla Detalle: Dos campos numéricos (ID, OBJ_ID)
Registros en esta tabla: (1,12), (1,35), (1,14), (2, 17) , (5, 13)
(Cada tupla, un registro de la tabla)

Querría diseñar una consulta que me permitiera obtener para cada registro de la tabla Maestro, el número de registros que tiene relacionados en la tabla Detalle. Si no tiene registros relacionados, entonces debería devolver que tiene 0 registros relacionados. En mi ejemplo, el resultado de esta consulta sería algo así:
(1,3), (2,1), (3,0), (4,0), (5,1)
(Es decir, el registro con Id=1 en la tabla Maestro tiene tres elementos relacionados en la tabla detalle, pero el registro con Id=3 no tiene ninguno).

Soy capaz de hacer una consulta que me devuelva (1,3),(2,1) y (5,1) pero soy incapaz de pensar una consulta que incluya los registros que no tienen ninguna relación en el detalle (es decir, (3,0) y (4,0)).

¿Podéis ayudarme, por favor?
Muchas gracias.
Un saludo,
Ana.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda con consulta sql

Publicado por 2pl (53 intervenciones) el 24/07/2011 18:18:55
A ver si soy capaz de explicartelo
Te creas la consulta con las dos tablas, unes los dos campos relacionados y en la linea de unión das dos click y te saldrá el tipo de relacion, le dices todos los campos de la tabla maestra etc...
En la consulta te creas un campo (por ejemplo NUMREG númerico) de esta forma
NUMREG:IIF(isnull([aqui pones cualquier campo de la tabla detalle]);0;1) esto quiere decir que si el campo es nulo pondrá un 0 y si no un 1, luego como tendras que resumir por ID pués te dará el total de registros por cada ID
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda con consulta sql

Publicado por Ana (80 intervenciones) el 25/07/2011 12:02:28
Muchas gracias, 2pl.
Lo he probado y funciona muy bien, con una excepción. A ver si ahora soy yo capaz de explicarme.
Consigo tener algo así:
(1,1), (1,1), (1,1),(2,0),(3,0)

Es decir: el registro maestro "1" tiene tres asociados en el detalle, y los registros "2" y "3", ninguno.
Después de este punto y para conseguir lo que quiero le meto un "count" (sobre el campo NumReg) y un "group by" (por el campo id del maestro) y obtengo:
(1,3),(2,1),(3,1)
Claro, cuenta las ocurrencias de los registros 2 y 3 y hay una por cada uno, aunque su valor sea 0. ¿Puedo conseguir que ese 0 no se transforme en 1? Quizás no he entendido bien lo que querías decir con eso de "resumir por Id".

Muchas gracias por la ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda con consulta sql

Publicado por 2pl (53 intervenciones) el 25/07/2011 13:25:29
En diseño de consulta, en la barra de menus superior hay un signo de sumatorio y ahi se le dice por que campo quieres agrupar yel campo numreg tiene que ponerlo como suma.No tienes que utilizar para nada el count. Los registros que tienen detalle tendran un 1 y los que no un o, asi que cuando hagas el sumatorio el valor será la suma de tantos 1 y tantos 0.
Espero haberme explicado.
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda con consulta sql

Publicado por Ana (80 intervenciones) el 25/07/2011 13:40:55
Ah, ya. Muchas gracias. Ya lo había apañado haciendo la suma en una segunda consulta que utilizaba la primera, pero si lo puedo hacer todo en una única consulta mucho mejor.

Muy ambale por dedicarme tu tiempo.
Un saludo,
Ana.l
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar