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 30-03-2011
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.471
Poder: 21
newtron Va camino a la fama
Consulta SQL

Hola.

Tengo una tabla con estos registros:

Pedido Articulo Cantidad Servido
00000001 0001 1 0
00000001 0002 2 1

00000002 0001 1 0
00000002 0002 5 5
00000002 0003 2 0

00000003 0001 2 0
00000003 0002 5 0
00000003 0003 2 0

00000004 0001 5 0
00000004 0002 2 0
00000004 0003 3 0

Necesitaría que algún amable gurú del sql me dijera si es posible hacer una instrucción para que me de el valor de la suma de las cantidades pedidas de un artículo siempre que no hubiera ningún artículo servido dentro del pedido. O sea, para este ejemplo tendría que dar lo siguiente:

0001=7
0002=7
0003=5

porque ignoraría las cantidades correspondientes a los pedidos 00000001 y 00000002 que ya tienen parte de los artículos servidos independientemente del artículo que se haya servido dentro del mismo.

Gracias y un saludo
Responder Con Cita
  #2  
Antiguo 30-03-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
no entendi muy bien tu sumatoria

segun mi interpretacion sume
0001.....9
0002.....7
0003.....7


no he considerado los que servido <> 0
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #3  
Antiguo 30-03-2011
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.471
Poder: 21
newtron Va camino a la fama
Hola y gracias por responder.

El tema es que hay que ignorar los pedidos en los que cualquier línea estén entregados total o parcialmente independientemente de que sea ese artículo u otro, por eso los dos primeros pedidos los ignoro de la sumatoria.

Saludos
Responder Con Cita
  #4  
Antiguo 30-03-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
ah ok...
pero... que campo.. o como sé que el producto esta parcial o totalmente entregado?
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #5  
Antiguo 30-03-2011
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.471
Poder: 21
newtron Va camino a la fama
A ver si consigo explicarme:

Código:
Pedido      Articulo   Cantidad  Servido
00000001  0001          1             0
00000001  0002          2             1
                                            ---   
              TOTAL SERVIDO          1
00000002  0001          1             0
00000002  0002          5             5
00000002  0003          2             0
                                            ---   
              TOTAL SERVIDO          5
 
00000003  0001          2            0
00000003  0002          5            0
00000003  0003          2            0
                                           ---   
             TOTAL SERVIDO          0
 
00000004  0001          5            0
00000004  0002          2            0
00000004  0003          3            0  
                                           ---   
           TOTAL SERVIDO             0
Lo que necesito es la suma de las cantidades pedidas de los artículos en los que no haya nada recibido del pedido, o sea, que el TOTAL RECIBIDO=0. Si cualquier línea del pedido ha sido recibida total o parcialmente ya no debe de sumar la cantidad del artículo.

Última edición por newtron fecha: 30-03-2011 a las 19:31:53.
Responder Con Cita
  #6  
Antiguo 30-03-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
Que Base de Datos estas usando?
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #7  
Antiguo 30-03-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
Newtron

podrias hacer esto...

Código SQL [-]
Select Articulo, Sum (Cantidad) As Cant
from tabla1
where Pedido not in (Select Pedido  from tabla1 where Servido <>0)
group by articulo

Sumas las cantidades de los articulos cuyo pedido no haya sido atendido (servido=0)

espero te sirva

saludos
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #8  
Antiguo 30-03-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
También creo que sirve algo así:

Código SQL [-]
select pedido, sum(cantidad), sum(servido)
from PRUEBA004
group by pedido
having sum(servido)>0
Responder Con Cita
  #9  
Antiguo 30-03-2011
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
Solo una observación. Casimiro, me parece que el HAVING no es necesario en este caso.
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #10  
Antiguo 30-03-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
Consulta1ArticuloCant
0001
7
0002
7
0003
5

me he tomado el trabajito de crear la tabla y colocarle los datos que mencionas.... con el query que te puse mas arriba me da el resultado mostrado
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #11  
Antiguo 31-03-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Chris Ver Mensaje
Solo una observación. Casimiro, me parece que el HAVING no es necesario en este caso.
Si quiere los que no se haya servido nada, entonces será servido=0
Código SQL [-]
select pedido, sum(cantidad), sum(servido)
from PRUEBA004
group by pedido
having sum(servido)=0

¿O no lo he entendido bien?
Responder Con Cita
  #12  
Antiguo 31-03-2011
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Si quiere los que no se haya servido nada, entonces será servido=0
Código SQL [-]
select pedido, sum(cantidad), sum(servido)
from PRUEBA004
group by pedido
having sum(servido)=0

¿O no lo he entendido bien?
mmm, no sé exactamente la claúsula Having, pero creo que se comporta como un WHERE para el GROUP BY. Si es lo que creo, entonces el GROUP BY no haría el trabajo que se espera a menos que servido sea 0. Si te refieres a no devolver e los resultados los que tengan servidor=0, entonces, hasta dónde sé se debería utilizar WHERE

O eso es lo que creo ...
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #13  
Antiguo 31-03-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
el tema es un poquito mas complejo..
debe sumar todas las cantidades de los pedidos que no hayan sido atendidos...

aquellos pedidos que ya fueron atendidos parcial o totalmente no debe sumar... y eso se hace con el query que puse mas arriba....

esperemos que newtron se pronuncie
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #14  
Antiguo 31-03-2011
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Poder: 22
fjcg02 Va camino a la fama
Se puede hacer de varias maneras, pero la solución de "libro" y más eficiente, es la que ha expuesto Casimiro.

En un examen, sacaría la nota máxima con esa respuesta.

Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
  #15  
Antiguo 31-03-2011
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.471
Poder: 21
newtron Va camino a la fama
Hola amigos.

Gracias a todos por vuestras respuestas.

En este caso la instrucción del amigo oscarac es la que me vale porque la instrucción del amigo casimiro no es lo que yo andaba buscando porque lo que me selecciona es la suma de todo el pedido en vez del artículo.

Como siempre gracias a todos por vuestra atención y un saludo.
Responder Con Cita
  #16  
Antiguo 31-03-2011
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Poder: 22
fjcg02 Va camino a la fama
Hombre, no creo que haya que echarle demasiada imaginación ni tiempo para cambiar la consulta y agruparla por pedido, artículo.

Código SQL [-]
select pedido, articulo, sum(cantidad)
from PRUEBA004
group by pedido, articulo
having sum(servido)>0

Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
  #17  
Antiguo 31-03-2011
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.471
Poder: 21
newtron Va camino a la fama
Cita:
Empezado por fjcg02 Ver Mensaje
Hombre, no creo que haya que echarle demasiada imaginación ni tiempo para cambiar la consulta y agruparla por pedido, artículo.
No hombre, no es eso. Lo que quiero decir es que o no he sabido explicarme correctamente o Casimiro no me ha pillado la idea. La idea era hacer un total de la cantidad de artículos pedida por artículo siempre y cuando ningún artículo del pedido hubiera sido servido independientemente del artículo que sea. Con la consulta que me propone Casimiro creo que hace referencia a la cantidad servida en la línea del pedido, no en la suma del total del pedido. No sé si me explico pero la instrucción de oscarac me sirve perfectamente.

Gracias y un saludo.
Responder Con Cita
  #18  
Antiguo 31-03-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Tú lo que quieres es librarte del premio que me he ganado

Cita:
Empezado por fjcg02
Se puede hacer de varias maneras, pero la solución de "libro" y más eficiente, es la que ha expuesto Casimiro.
Eso, eso, que me den mi premio
Responder Con Cita
  #19  
Antiguo 31-03-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
por eso siempre es bueno mencionar el resultado que se espera obtener con algun ejemplo en pantalla, cosa que asi tenemos una mejor idea

y premio para mi no hay?
jejejeje
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #20  
Antiguo 31-03-2011
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.471
Poder: 21
newtron Va camino a la fama
Buenooooooo, no os apureis que con lo torpe que soy vais a tener todos oportunidad de demostrar vuestras virtudes
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
consulta sobre una consulta :D PablorD MySQL 4 02-06-2010 21:59:51
Realizar una consulta sobre los registros que devuelve otra consulta Borjaserrano Firebird e Interbase 12 01-10-2007 23:19:44
Consulta dentro de otra consulta judit25 Conexión con bases de datos 1 25-06-2007 15:52:15
consulta sobre consulta superhopi SQL 2 16-05-2003 19:01:47


La franja horaria es GMT +2. Ahora son las 21:15:20.


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