Incluir registros sin resultados en una consulta de access

Tengo dos tablas, la primera es una tabla de clientes típica: idcliente, nombre, teléfono, etc... La otra, es una tabla que relaciona los descuentos que se aplican a cada cliente por cada servicio. Es decir: idcliente-idservicio-descuento. Si un cliente no tiene un descuento para un determinado servicio, no hay registro alguno en esta tabla.

Quiero hacer una consulta que me proporcione un listado en el que aparezcan todos los clientes, todos los servicios y todos los descuentos (si no hay descuento asignado a un servicio, que aparezca cero)

1 respuesta

Respuesta
1

En la vista diseño de la consulta, cuando añades las tablas, te aparecerá una linea que indica la relación que hay entre las tablas (en tu caso imagino que unirá idcliente de la tabla clientes con idcliente de la tabla servicios)

Lo que tienes que hacer es modificar las propiedades de esa relación (o combinación, como lo llama Access). Para ello simplemente has de selecciona la linea de combinación, luego clic derecho del ratón para abrir el menú contextual, y pulsar en "modificar las propiedades de la combinación".

En la ventana que se abre, seleccionas el tipo de combinación (2 o 3) que sea parecido a "incluir TODOS los registros de clientes y solo aquellos de servicios donde los campos combinados sean iguales" (en lo que pongo en negrita verás los nombres de tus dos tablas)

Aceptas, guardas los cambios de la consulta y listo, ya verás todos los registros de tus clientes tengan o no descuentos asociados.

Para que en el campo descuento te aparezca 0 si no lo tiene, tienes que usar la función Nz() en el encabezado del campo: Nz(Descuento;0)

Gracias, esto ya lo había intentado, pero no me funciona....Me sigue proporcionando los mismos resultados con la combinación normal. ¿Puedo enviarte la BD?

Si, claro, súbela a cualquier servidor en la nube ( Dropbox, filebig...) y ponme aquí el enlace de descarga

Si lo prefieres, envíamela comprimida (en rar o zip) a este correo:

[email protected]

Te responderé por aquí.

Mi propuesta, que es la consulta que tienes hecha en tu BD, funciona correctamente, te muestra los 3 registros de Clientes y los campos relacionados de Descuentos. Si borras de descuentos los registros, por ejemplo del Cliente 3, la consulta te seguirá mostrando los 3 clientes.

Ahora bien, no es la consulta que buscas, porque yo había entendido que solo tenías 2 tablas, y no tres, una de las que es una "combinación" de las otras dos. En ese caso, el sistema propuesto ya no sirve.

La solución pasa por crear una consulta auxiliar entre las tablas Clientes y Servicios, pero sin establecer ninguna relación entre ambas tablas (lo que en principio no es un problema, porque no están relacionadas directamente). De esta forma obtienes una consulta que es el producto cartesiano de las dos tablas, es decir, una consulta en la que cada registro de Clientes se combina con cada registro de Servicios:

Esta consulta la guardas, por ejemplo como "Descuentos-Servicios-Aux", y la usas como base para la consulta definitiva, relacionándola con la tabla Descuentos por los dos campos ID, y modificando las propiedades de la combinación según lo que indicaba en la primera respuesta:

Y ya tienes el resultado deseado:

Te dejo el archivo para que lo veas en funcionamiento: http://www.filebig.net/files/Jug6tVHiRe 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas