FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Unir 2 Consultas en una sola
Hola Amigos
Tengo un problema, bien sucio, y debo hacerlo si o si Tengo 2 consultas, las cuales debo unir en una sola. Es un programita de promociones donde: Cada promocion tiene sus clientes, las facturaciones que se le han hecho a cada uno, cuantos puntos ha ganado con cada facturacion, etc. etc. La consulta siguiente obtiene los datos del socio y reporta: Monto facturado en promociones normales Monto facturado en promociones especiales Monto Total facturado ( Todo esto para una promocion especifica :IDPROMO ) Esta otra consulta reporta: Total de puntos ganados ( en facturaciones normales y especiales ) Total de puntos que el cliente ha canjeado Total de puntos que tiene en la actualidad ( totalganados - canjeados ) ( Todo esto para una promocion especifica :IDPROMO ) Lo que debo hacer es: mostrar los datos del cliente: nombre apellido y establecimiento y luego monto total facturado monto normal monto especial puntos ganados puntos canjeados puntos actuales Solo eso... juntar los 2 informes en uno solo Algun alma caritativa que quiera ayudarme con este problemon ? Desde ya muchas gracias... Última edición por dec fecha: 25-11-2005 a las 03:11:09. Razón: ¡¡Encerrad el código fuente entre las etiquetas [SQL] ... [/SQL]!! |
#2
|
||||
|
||||
Saludos
No he leido todo tu mensaje pero por el titulo que has dado te dire que chequees este hilo: http://www.clubdelphi.com/foros/showthread.php?t=27421
__________________
Van Troi De León (Not) Guía, Code vB:=Delphi-SQL, ¿Cómo? Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto! |
#3
|
|||
|
|||
hola Van Troi...
Gracias por responder... No se si tu consejo ira a funcionar, ya que tengo PUNTOSGANADOS, PUNTOSCANJEADOS, PUNTOSACTUALES en una de las consultas y MONTOFACTURADONORMAL, MONTOFACTURADOESPECIAL, MONTOTOTAL en otra de las consultas, es decir: Cada una de las consultas usa 3 campos distintos... y lo comun a cada una seria el nombre y los datos de la persona... Funcionara igual o la Union debe recibir = cantidad de campos con igual nombre de campos ? Gracias |
#4
|
||||
|
||||
Cita:
__________________
Van Troi De León (Not) Guía, Code vB:=Delphi-SQL, ¿Cómo? Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto! |
#5
|
|||
|
|||
Espero que te ayude
SELECT CLIENTE.NROSOCIO AS SOCIO, CLIENTE.NOMBRE AS CLIENTE, CLIENTE.APELLIDO AS APELLIDO, CLIENTE.ESTABLECIMIENTO AS ESTABLECIMIENTO, (select SUM(case when espromoesp=true then 0 else FACTURACION.MONTO end) from Facturacion as F where Facturacion.idcliente=cliente.id) AS M_NORMAL, (select SUM(case when espromoesp=true then FACTURACION.MONTO else 0 end) from facturacion as F where Facturacion.idcliente=cliente.id) AS M_ESPECIAL, (select SUM(FACTURACION.MONTO) from Facturacion as where Facturacion.idcliente=cliente.id) AS TOT_MONTO, (select sum(facturacion.puntos) from Facturacion where idcliente=cliente.id) as Totalpuntos,(SELECT SUM(B.TOTALPUNTOS) FROM CANJE B WHERE B.IDCLIENTE = cliente.id) as canjea,totalpuntos-canjea as puntos_actuales FROM CLIENTE where cliente.idpromo = :IDPROMO ORDER BY CLIENTE.APELLIDO ASC, CLIENTE.ESTABLECIMIENTO ASC
en fin espero que eso te ayude mi estimado |
#6
|
|||
|
|||
FOURIER !!
Mil gracias por tu aporte... no sabes cuan feliz estoy de recibir una respuesta en este hilo... Voy a probarlo enseguida y luego te comento como me fue con la consulta... Gracias !!! |
#7
|
|||
|
|||
Aquí estare conectado
Ok yo aquí estaré conectado por si surge alguna duda
|
#8
|
|||
|
|||
hola FOURIER nuevamente
Aqui he ordenado un poquitin la consulta... la he ingresado, pero me ha dado error en la linea 10, posicion 1... Aqui la imagen del error, con el mensaje... como que no conoce alguna sentencia... http://img231.imageshack.us/img231/5...userror3xp.jpg
Me pregunto como podria hacer para enviarte las estructura de las tablas para que puedas probar, ya que yo uso el motor NEXUS... www.nexusdb.com Si quieres, armo las tablas en mySQL o en algun formato que digas y te las envio... (no se si con registros de ejemplo, ya que nexus no posee ninguna utilidad para exportar o convertir las tablas, ni registros) Muchas gracias por tu ayuda |
#9
|
|||
|
|||
Ok mi mail
mi correo es originalfourier@hotmail.com,, si quieres agregame a tu msn y nos transferimos los archivos... si quieres pasa las tablas a access para hacer una miniprueba..
|
#10
|
|||
|
|||
ya vi que falta
ya vi a esa parte le falta el nombre de alias a facturación... checate que donde dice select sum(facturacion.monto) from facturacion as where
esta vacia falta el alias, ponle cualquier cosa después del as |
#11
|
|||
|
|||
Bueno bueno...
Faltan palabras de agradecimiento para FOURIER, quien tan amablemente se ha ofrecido a ayudarme con mi problema, a traves del MSN Messenger, y se ha quedado hasta que finalmente pude hacer funcionar y unificar la consulta. Hoy, he tenido muchisima suerte... gracias FOURIER. Aqui la consulta terminada, por si a alguien le sirve... Compatible con NEXUS ( motor de base de datos 3rdparty para Delphi - www.nexusdb.com )
|
#12
|
|||
|
|||
Limitar por fechas la consulta anterior
Hola FOURIER nuevamente
Aqui inaugurando el 2006 con otro problemin basado en la misma consulta Ruego que todavia no hayas empezado tus vacaciones y tengas unos segundos para ayudarme a resolver esto: Me han pedido poner un filtro por fechas en la consulta anterior, es decir, limitar todos los resultados totales de la consulta por fechas. Ambas tablas, facturacion y canjes poseen un campo FECHA, pero he ingresado el codigo para limitar por fechas en cada uno de los WHERE, sin exito... Lo que si tengo dudas es en la logica de este problema, ya que las facturaciones no poseen la misma fecha que los canjes, por eso es la duda que tengo de que funcione... Gracias, y buen 2006 !! |
#13
|
|||
|
|||
Hola amigos nuevamente
Al final pude solucionar el problema, con la siguiente consulta: Código:
SELECT CLIENTE.NROSOCIO AS SOCIO, CLIENTE.NOMBRE AS CLIENTE, CLIENTE.APELLIDO AS APELLIDO, CLIENTE.ESTABLECIMIENTO AS ESTABLECIMIENTO, (select SUM(case when espromoesp=true then 0 else F.MONTO end) from Facturacion as F where F.idcliente = cliente.id) AS M_NORMAL, (select SUM(case when espromoesp=true then F.MONTO else 0 end) from facturacion as F where F.idcliente = cliente.id) AS M_ESPECIAL, (select SUM(FAC.MONTO) from Facturacion as FAC where FAC.idcliente=cliente.id) AS TOT_MONTO, (select sum(facturacion.puntos) from Facturacion where idcliente=cliente.id) as totalpuntosganados, (SELECT SUM(B.TOTALPUNTOS) FROM CANJE B WHERE B.IDCLIENTE = cliente.id) as totalpuntoscanjeados, (select sum(facturacion.puntos) from Facturacion where idcliente=cliente.id) - (SELECT SUM(B.TOTALPUNTOS) FROM CANJE B WHERE B.IDCLIENTE = cliente.id) as puntos_actuales FROM CLIENTE where cliente.idpromo = 10 ORDER BY CLIENTE.APELLIDO ASC, CLIENTE.ESTABLECIMIENTO ASC Si deseo filtrar este informe por FECHAS, donde debo poner dicho filtro ? NOTA: FACTURACION.FECHA es el campo a filtrar... y por lo que veran, la tabla facturacion se usa como en 4 o 5 secciones de esta consulta... He probado poner el filtro en cada lugar donde se usa la tabla facturacion pero no he tenido exito, me sale todo en blanco (no da error la consulta) Desde ya muchas gracias |
|
|
|