FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Consulta dificil mysql
Estas son mis dos tablas:
______________________ |TABLA TICKET | ------------------------- |id | ptotal |fecha| ------------------------- _____________________ |TABLA INGRESOS | ------------------------ | id | idticket | ingreso | ----------------------- ambas estan relaionadas, cade vez que se paga un ticket se crea un ingreso con el idticket del correspondiente ticket. El ticket puede quedar a medio pagar (en deuda). por tanto puede que cada ticket tenga varios ingresos hasta quedar totalmente pagado. Mi problema es la caja diaria. He creado este SELECT: de manera que me seleccione el ptotal del ticket o la suma de los ingresos segun sea este (el ptotal) mayor que la suma de los otros o viceversa, es decir si la suma de los ingresos del dia es menor que el ptotal del ticket cojo la suma de los ingresos, y si es al contrario osea se ha pagado totalmente el ticket cojo el ptotal del ticket. El problema es que lo hace bien y me da una tabla con una columna de sumas de ingresos o ptotales en su defecto. pero no se como sumar esta columna para que me de un solo resultado que seria los ingresos del dia. totalingresos 30 30 23 12 34 56 --- 185 tendria que conseguir como resultado esta comprobado y esta bien, pero nose como sumar ahora esta columna de numeros si le meto un sum antes del if me da un problema de error de group by Gracias por adelantado. Última edición por taru fecha: 02-09-2006 a las 14:22:37. |
#2
|
||||
|
||||
No estoy seguro de que funcione pero podrías intentar crear una vista con tu sentencia:
Después puedes obtener el total sumando el campo como se esperaría:
Espero que sea útil, saludos |
#3
|
|||
|
|||
Si lo que quieres es calcular el total de pagos recibidos en una fecha (sin importar a qué tickets corresponden) yo haría la siguiente consulta:
Código:
select sum(ingresos.ingreso) as cajadeldia from ingresos where ingresos.fecha=diaacalcular; Saludos, Antonio.
__________________
TonyG |
#4
|
||||
|
||||
Te comento Tony_G no puedo hacer eso ya que el ingreso es lo que entrega el cliente a la cajera aunque sea mas que el total del ticket entonces no seria real ya que esta tendria que dar cambio y no cuento con eso en la base de datos.
Gracias por contestar. Héctor Randolph tengo una pregunta, la tabla que se crea que es temporal o quedaria para siempre?. Me refiero a CREATE VIEW caja AS Saludos y gracias. Última edición por taru fecha: 02-09-2006 a las 19:36:33. |
#5
|
|||
|
|||
Has probado añadiendo 'WITH ROLLUP' a tu consulta:
Código:
SELECT IF (sum(ingresos.ingreso) > ticket.ptotal, ticket.ptotal, sum(ingresos.ingreso)) as totalingresos FROM ticket LEFT JOIN ingresos ON ticket.id = ingresos.idticket WHERE DAY(ingresos.fecha)=hoy GROUP BY ticket.id WITH ROLLUP; Espero que te sirva. Saludos, Antonio.
__________________
TonyG |
#6
|
||||
|
||||
Gracias Tony_G Pero no funciona te comento:
y me da como resultado: 30 90 150 198 10 30 el rollup añade el 30 final lo anterior al 30 esta todo correctamente incluso si hago el select de esta forma: veo el id de los ticket y el null final, De todas formas gracias por lo del roolup no lo conocia ya he visto tb el CUBE: 148, 30 150, 90 154, 150 158, 198 162, 10 , 30 |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Una consulta dificil | noshy | SQL | 3 | 31-05-2006 20:50:58 |
Una consulta dificil | noshy | SQL | 3 | 22-05-2006 18:22:06 |
Consulta Dificil | Abel Garcia | Firebird e Interbase | 5 | 18-11-2005 19:40:50 |
Una consulta un poco dificil? | danytorres | SQL | 1 | 24-10-2003 22:42:03 |
consulta a mysql | jfontane | PHP | 2 | 10-06-2003 19:11:57 |
|