Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-09-2003
JROMAN JROMAN is offline
Miembro
 
Registrado: sep 2003
Posts: 11
Poder: 0
JROMAN Va por buen camino
Question Un Campo/ Dos Columnas

Tengo Una tabla en MySQL, que contiene fecha, importe, tipo venta(tienda/almacén).

Quería hacer una Consulta, que me diera la fecha, las ventas almacén, y las ventas en tienda. Es decir según el tipo de venta que me las ponga en una columna o en otra.

Lo he intentado con SELECT xxx WHERE, con IIF(xxx etc etc), pero siempre me da error de syntaxis.

Me podéis Ayudar?

Gracias
Responder Con Cita
  #2  
Antiguo 08-09-2003
Avatar de haron
haron haron is offline
Miembro
 
Registrado: may 2003
Ubicación: Las Palmas de Gran Canaria
Posts: 310
Poder: 22
haron Va por buen camino
no se si lo he entendido bien.

necesitas tres columnas: fecha, venta_almacen y venta_tienda.
si el tipo de venta es 'almacen' que te coloque el resultado en 'venta_almacen', en caso contrario lo coloque en 'venta_tienda'.

no he usado MySQL, pero en Interbase lo haria asi:

Código:
select 
  fecha, 
  importe as venta_almacen,
  0 as venta_tienda
from ventas
where tipo_venta='almacen'

union all

select
  fecha,
  0 as venta_almacen,
  importe as venta_tienda
from ventas
where tipo_venta='tienda'

order by fecha
puedes agrupar por la fecha, si quieres que salga un acumulado del importe, etc...

si este tipo de sentencias no lo soporta MySQL (que me extraña) puedes hechar mano tambien de los campos calculados en Delphi.
__________________
“Plantad la semilla de la avaricia en la infértil tierra de la estupidez y obtendreis la bella flor de la mierda”
(Confucio)
Responder Con Cita
  #3  
Antiguo 08-09-2003
JROMAN JROMAN is offline
Miembro
 
Registrado: sep 2003
Posts: 11
Poder: 0
JROMAN Va por buen camino
Gracias por tu respuesta Haron, pero....

Ya lo había probado, y funciona al 50%, me explico:

La tabla, la añade al final, no la mezcla,

fecha venta_almacen venta_tienda
01/01/2003 10,20 0
02/01/2003 30,10 0
03/01/2003 18,20 0
01/01/2003 0 11
02/01/2003 0 12
03/10/2003 0 23

Y como problema añadido, las venta_tienda, no tiene decimales ?¿

¿se te ocurre alguna otra solucion?
Responder Con Cita
  #4  
Antiguo 09-09-2003
Avatar de javiermorales
javiermorales javiermorales is offline
Miembro
 
Registrado: may 2003
Ubicación: Alicante
Posts: 272
Poder: 22
javiermorales Va por buen camino
Hola, por lo que comentas de hacerlo utilizando el iif, que no se si lo soporta MySql, sería:

Select fecha_venta, sum(iif(tipo_venta='almacen',importe,0)) as tot_almacen, sum(iif(tipo_venta='tienda',importe,0)) as tot_tienda
from ventas
group by fecha_venta

Espero que te sirva. Un saludo.
Responder Con Cita
  #5  
Antiguo 09-09-2003
JROMAN JROMAN is offline
Miembro
 
Registrado: sep 2003
Posts: 11
Poder: 0
JROMAN Va por buen camino
Gracias Javiermorales, pero el problema continua, empiezo a estar desesperado, tanto si utilizo

sum(iif(tipo_venta='almacen',importe,0)) as tot_almacen

o utilizo

iif(tipo_venta='almacen',sum(importe),0) as tot_almacen

el resultado es el mismo, "error de sintaxis"....

Empiezo a creer que la única solución es crear una tabla local temporal donde volcar los resultados.... solución que no me gusta nada.

Un saludo.
Responder Con Cita
  #6  
Antiguo 10-09-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
hola

en interbase tambien puedes hacer algo asi

Código:
select codigo,
       (select sum(pvp) from articulos where codigo >= '0040000'),
       (select sum(pvp) from articulos where codigo < '0040000')
from articulos
o sea, una select en la select

a ver si asi te sirve
Responder Con Cita
  #7  
Antiguo 10-09-2003
Avatar de javiermorales
javiermorales javiermorales is offline
Miembro
 
Registrado: may 2003
Ubicación: Alicante
Posts: 272
Poder: 22
javiermorales Va por buen camino
Hola, utilizando lo indicado por Cadetill, quedaría como:
Código:
Select fecha_venta, 
(select sum(importe) from ventas where tipo_venta='almacen'),
(select sum(importe) from ventas where tipo_venta='tienda')
from ventas
o si lo permitiese, yo intentaría unir las selecciones:
Código:
Select A.fecha_venta, 
(select sum(B.importe) from ventas B where B.tipo_venta='almacen' and A.fecha_venta=B.fecha_venta),
(select sum(C.importe) from ventas C where C.tipo_venta='tienda' and A.fecha_venta=C.fecha_venta)
from ventas A
No lo he probado, ya que no tengo MySql. Un saludo.
Responder Con Cita
  #8  
Antiguo 10-09-2003
JROMAN JROMAN is offline
Miembro
 
Registrado: sep 2003
Posts: 11
Poder: 0
JROMAN Va por buen camino
Gracias a todos por vuestra inestimable ayuda, pero.... "cuando todo falla, es el momento de leerse el manual"

En la Pág. de MySQl, esta el manual (muy buen manual, por si alguien le interesa) y después de releer y releer, he visto que en MySQL, el "iif" se escribe como un simple "if", con lo que una de las posibles soluciones seria:

sum(if(tipo_venta='almacen',importe,0)) as tot_almacen

A grandes problemas, soluciones muy tontas.

Gracias a todos y Un saludo.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 14:15:35.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi