Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Consulta avanzada

Estas en el tema de Consulta avanzada en el foro de Mysql en Foros del Web. Buen dia, a todos. Quiero realizar una consulta donde se incluyen 3 tablas, las tablas son clientes, concepto_pagos y pagos_clientes: Tabla clientes : id, Nombres, ...
  #1 (permalink)  
Antiguo 06/11/2011, 11:46
 
Fecha de Ingreso: junio-2011
Mensajes: 13
Antigüedad: 12 años, 9 meses
Puntos: 0
Consulta avanzada

Buen dia, a todos.

Quiero realizar una consulta donde se incluyen 3 tablas, las tablas son clientes, concepto_pagos y pagos_clientes:

Tabla clientes :
id, Nombres, Apellidos

1-maria
2-pedro
3-carlos

Tabla concepto_pagos:
id, nombre_concepto

1-alquiler
2-telefono
3-alimentacion

Tabla pago_clientes:
id, id_cliente, id_concepto_pago, monto

1-1-2-100
2-1-3-500
3-2-1-200
4-3-1-200
5-3-3-500

Lo que deseo es realizar una consulta donde me arroje el siguiente resultado:

id_cliente, nombre_cliente, concepto_pago, monto

Para el cliente 1 - maria

1-maria-1-null
1-maria-2-100
1-maria-3-500

Para el cliente 2 - pedro

2-pedro-1-200
2-pedro-2-null
2-pedro-3-null

Para el cliente 3 - carlos

3-carlos-1-200
3-carlos-2-null
3-carlos-3-500

Como se podra realizar esto?, de ante mano mil gracias...por su valiosa ayuda.
  #2 (permalink)  
Antiguo 06/11/2011, 17:30
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Consulta avanzada

Parte de lo que quieres se puede hacer en una consulta, pero parte no...
La consulta se debe hacer con LEFT JOIN sobre el o los campos que relacionan ambas tablas. El problema es que en tu ejemplo hay registros de algunos clientes que no poseen coincidencias con la segunda tabla, por lo que saldrán NULL en esa columna. Pero el problema es que saldrá NULL en ambas columnas: La del ID de concepto_pagos.
En otras palabras, no puedes obtener en una consulta esto:
Cita:
id_cliente, nombre_cliente, concepto_pago, monto
2-pedro-1-200
2-pedro-2-NULL
2-pedro-3-NULL
sino esto:
Cita:
id_cliente, nombre_cliente, concepto_pago, monto
2-pedro-1-200
2-pedro-NULL-NULL
2-pedro-NULL-NULL
¿Se entiende la diferencia?
No puedes obtener el ejemplo donde se ven los ID de los conceptos, porque no existe un registro que los relacione con los clientes. Entonces simplemente te pondrá NULL en todo lo que no coincida... entre las cosas que están esos IDs.

Para poder hacer lo que quieres tienes que trabajar un poco con las dos cosas: Parte lo puedes lograr en la consulta (lo que si coincide, pero el resto lo tendrás que construir por programación...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 06/11/2011, 20:29
 
Fecha de Ingreso: junio-2011
Mensajes: 13
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Consulta avanzada

Muchas gracias de ante mano por tu respuesta.

Si entiendo lo que me planteas....y es verdad como no existe relación con los conceptos no hay forma de relacionarlos.

Una ultima pregunta, se podría mostrar en un consulta, los conceptos que no ha pagado el cliente?

De nuevo mil gracias.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:22.