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

Consulta dos tablas para generar cargos y abonos

Estas en el tema de Consulta dos tablas para generar cargos y abonos en el foro de Mysql en Foros del Web. hola he visto post similares pero no es lo que busco por eso me atrevi a escribir... tengogo el siguiente proble. tabla1=cargos. tabla2= abonos. quiero ...
  #1 (permalink)  
Antiguo 28/11/2013, 03:17
 
Fecha de Ingreso: noviembre-2008
Mensajes: 110
Antigüedad: 15 años, 5 meses
Puntos: 2
Consulta dos tablas para generar cargos y abonos

hola he visto post similares pero no es lo que busco por eso me atrevi a escribir...

tengogo el siguiente proble.

tabla1=cargos.
tabla2= abonos.

quiero que me aparesca asi..
comentario - cargos - abonos
- $100 - $0
coment1 - $0 - $10
coment2 - $0 - $15
- $50 - $0
coment3 - $0 - $100

Las tabla1 tiene en el campo01- el id del cliente y en el abono osea la taba2 en el campo09. espero me puedan ayudar aqui les dejo la consulta como la tengo me genera un reporte pero no me da..

Código MySQL:
Ver original
  1. SELECT ventas.campo01, ventas.campo02, ventas.campo06, ventas.campo11,
  2. abonos.campo09, abonos.campo01, abonos.campo02, abonos.campo03,
  3. abonos.campo04, abonos.campo05, abonos.campo09  
  4. FROM ventas,abonos
  5. WHERE  ventas.campo01='$cliente_id' AND ventas.campo09>='1'
  6. AND abonos.campo09='$cliente_id' AND abonos.campo05='$modulo2'
  7. ORDER BY 'ventas.campo06', 'abonos.campo02' ASC

No quiero usar JOIN porque no quiero que me muestre un solo registro por cliente , si el cliente tiene 10 cargos en la tabla cargos y tiene 5 abonos en la tabla abono quiero me me los muestre todos.. por orden de fecha pero no logro hacerlo

espero me hayan entendido y me puedan ayudar.. saludos

Última edición por kristhian23; 28/11/2013 a las 05:16 Razón: Código de programacion no permitido en foros de BBDD
  #2 (permalink)  
Antiguo 28/11/2013, 07:35
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Consulta dos tablas para generar cargos y abonos

Si los nombres de los campos en lugar de estar numerados fueran nombres comprensibles seria mas facil ayudarte, y te aseguro que tu productividad programando se multiplicaria.

Si no quieres usar JOIN no lo uses ni de forma implicita

FROM ventas,abonos
WHERE ventas.campo01='$cliente_id' .... AND abonos.campo09='$cliente_id'

es lo mismo, pero menos eficiente, que

FROM ventas INNER JOIN abonos ON ventas.campo01=abonos.campo09
WHERE ventas.campo01='$cliente_id' ....

Si los 0€ de tu ejemplo indican que quieres que salga el campo sin datos luego debes hacer una union, (voy a traducir los nombres de los campos, por el ejemplo tambien deduzco que de comentarios solo hay en los abonos)

Código MySQL:
Ver original
  1. SELECT sbc.fecha,sbc.comentario, sbc.cargos, sbc.impAbono
  2. FROM (SELECT v.fecha,'Venta' comentario, v.cargos, 0 impAbono
  3.             FROM ventas v
  4.             WHERE  v.cliente_id='$cliente_id' AND v.campo09>='1'
  5.       UNION ALL
  6.       SELECT a.fecha,a.comentario, 0 cargos, a.impAbono
  7.             FROM abonos a
  8.             WHERE  a.cliente_id='$cliente_id' AND a.campo05='$modulo2') sbc
  9. ORDER BY sbc.fecha

Fijate que para que las dos consultas tengan la misma estructura de campos pongo valores fijos a los campos que no tengo en la tabla.

Finalmente el order by debe hacerse en una superconsulta puesto que ORDER BY y UNION no se entienden bien....
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 28/11/2013, 08:47
 
Fecha de Ingreso: noviembre-2008
Mensajes: 110
Antigüedad: 15 años, 5 meses
Puntos: 2
Respuesta: Consulta dos tablas para generar cargos y abonos

hola gracias por responder ok cambie los nombre de las tabalas para que me sea entendido...quedo asi pero hoy no de da resulta de da este mensaje..


al hacer la consulta

The used SELECT statements have a different number of columns

Código MySQL:
Ver original
  1. SELECT abs.cliente_id, abs.cantidad, abs.fecha, abs.hora, aabs.comentario, abs.tabla
  2.     (SELECT cliente_id, fehca, factura, total, condicion FROM ventas WHERE  cliente_id='$cliente_id' AND condicion>='1'
  3.     UNION ALL
  4.     SELECT cliente_id, cantidad, fecha, hora, comentario, tabla  FROM abono WHERE  cliente_id='$cliente_id' AND a.tabla='$modulo2')abs ORDER BY fecha

Cita:
Editado: Código de programación no permitido en foros de Bases de Datos. Leer las normas del foro.
pero hoy no me da resultado me da ese mensaje..

si le dejo dentro de los SELECT abs.cliente id. me dice que ese campo no existes.. solo colocando el nombre del campo real me deja pasar

Leendo por ahi me dice que ese error es porque estoy usando UNION que eso quiere decir que debo tener el mismo numero de registros en una tabla con la otra cuando en lo que yo busco no es asi.. porque van a ver mas abonos que cargos.....

Última edición por gnzsoloyo; 28/11/2013 a las 11:07
  #4 (permalink)  
Antiguo 28/11/2013, 11:10
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 dos tablas para generar cargos y abonos

Cita:
The used SELECT statements have a different number of columns
Pues es medio evidente: Los dos SELECT que llevan el UNION ALL tienen diferente cantidad de columnas, y deben tener siempre la misma cantidad. es una regla básica del UNION en todos los DBMS
Mira, en el primero pides por:
Cita:
1) cliente_id,
2) fehca,
3) factura,
4) total, condicion
y en el segundo por:
Cita:
1) cliente_id,
2) cantidad,
3) fecha,
4) hora,
5) comentario,
6) tabla
Una de dos: O escribiste el primer select le falktan campos, o al segundo le sobran...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 28/11/2013, 14:44
 
Fecha de Ingreso: noviembre-2008
Mensajes: 110
Antigüedad: 15 años, 5 meses
Puntos: 2
Respuesta: Consulta dos tablas para generar cargos y abonos

hola gracias por responder...
Lo tengo asi y ya emite resultados correctos...

Código MySQL:
Ver original
  1. SELECT abs.campo01, abs.campo09, abs.campo06
  2.     (SELECT campo01, campo09, campo06 FROM ventas WHERE  campo01='$cliente_id' AND campo09>='1'
  3.      UNION ALL SELECT campo09, campo05, campo02 FROM abonos WHERE  campo09='$cliente_id' AND campo05='$modulo2') abs  
  4. ORDER BY 'campo06'
efectivamente hoy me genera una consulta y concuerdan los abonos con los cargos... lo unico que solo me aparecen los registros..en blanco porque por ejemplo
Cita:
Editado: Código de rpogramación no permitido en Foros de Bases de Datos. Leer las normas del Foro, por favor.
Entonces como aria ahi??? para que me muestre... porque la consulta ya esta bien.. pero no me muestra los resultados solo me aparecen las filas en blanco..

Última edición por gnzsoloyo; 28/11/2013 a las 14:52
  #6 (permalink)  
Antiguo 28/11/2013, 14:54
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 dos tablas para generar cargos y abonos

Por lo pronto, "ABS" es una palabra reservada de MySQL (Función ABS()), por lo que puede estar dando errores de ejecución o sintaxis sin que los detectes (si es que no lo estás haciendo bien).
Ahora bien, si no devuelve errores, pero tampoco datos, la respuesta es sencilla: No hay datos que cumplan las condiciones del WHERE, o bien las variables que usas no tienen lo que tu crees que tienen... Cosa MUY, pero MUY habitual...

En todo caso, programación es OFF TOPIC de este foro.
VErifica eso y si es el caso, consulta en el foro de PHP.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: php+base+de+datos, tablas
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 22:49.