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 06-11-2005
rtorioa rtorioa is offline
Miembro
 
Registrado: ene 2005
Posts: 25
Poder: 0
rtorioa Va por buen camino
Question Ayuda con consulta que me tiene ...

Hola, tengo 2 tablas, Entradas y transformaciones para una planta de despiece de pavo, las tablas tienen la siguiente información:
Entradas Transformaciones
lote kgs_entrada lote articulo kgs
-------------------- ------------------------------
A 120 A X 25
A 200 A X 20
B 36 A Y 200

Quiero hacer una consulta que me de lo siguiente:
consulta
lote entrada articulo kgs rendimiento(kgs/entrada)
-------------------------------------------------------------------
A 320 X 45 0,14
A 320 Y 200 0.62

Es decir, que me de el rendimiento de cada articulo por lote
No se si me he explicado bien, pero con sum y group by no soy capaz de sacarlo, si me pudieran ayudar...
Un saludo y gracias de ante mano.
Responder Con Cita
  #2  
Antiguo 06-11-2005
rtorioa rtorioa is offline
Miembro
 
Registrado: ene 2005
Posts: 25
Poder: 0
rtorioa Va por buen camino
perdon, pero creo que no han quedado las tablas claras arriba
Entradas
lote kgs
======
A 120
A 200
B 142.5

Transformaciones
lote articulo kgs
============
A X 25
A X 20
A Y 200

Perdonen si no he hecho bien mi pregunta
Responder Con Cita
  #3  
Antiguo 06-11-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Pues no acabo de captar claramente que es lo que quieres, porque no pones
Tabla1
campo1
campo2
...
Tabla2
campo1
campo2
...

Y luego el resultado que se obtendría con esos datos, para así hacernos una idea de lo que quieres.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #4  
Antiguo 07-11-2005
rtorioa rtorioa is offline
Miembro
 
Registrado: ene 2005
Posts: 25
Poder: 0
rtorioa Va por buen camino
Son 2 tablas, Tentradas y Ttransformaciones
Tentradas
- lote
- kgs
- ....

Ttransformaciones
- lote
- articulo
- kgs
- ...

El funcionamiento es el siguiente:
A la tabla entradas le llegan datos que son en realidad compras de canales completas. a esas entradas las identifica un lote, y puede haber mas de una entrada con el mismo lote.
A la tabla transformaciones le llegan datos que son las distintas pesadas que se hacen después de haber despiezado las canales (p.e alas de pavo, filete de pavo...) y que se las da el mismo lote de las canales de las que proceden.

La idea es poder ver el rendimiento de las canales que se compran, es decir,
de 600 kgs que se compraron del lote A salieron 200 kgs de filetes, 150 de alas y 250 de muslos.

En definitiva la consulta resultante sería algo así:

lote..............entrada........articulo........kgs........rdto(kgs/entrada)
-----------------------------------------------------------------
A...................600.............filete..........200..............0,33
A...................600.............alas...........150..............0,25
A...................600.............muslos........250..............0,42


Quizas ahora se entienda mejor, perdón por haberme explicado tan mal
y muchas gracias
Responder Con Cita
  #5  
Antiguo 07-11-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Mira a ver si con esta idea lo logras:
Código SQL [-]
  Select E.lote, Sum(E.entrada),T.articulo,Sum(T.kgs),Sum( T.kgs / E.Entrada)  as Rdto 
  From Tenentradas as E,Ttransformaciones as T
  Where E.lote = t.Lote
  Group By E.Lote, T.Articulo

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #6  
Antiguo 07-11-2005
rtorioa rtorioa is offline
Miembro
 
Registrado: ene 2005
Posts: 25
Poder: 0
rtorioa Va por buen camino
Te ha pasado exactamente lo mismo que a mi, esa consulta no va bien
por cada ocurrencia en la tabla transformaciones de un articulo multiplica el sum(entradas),

es decir, me multiplica los sum por cada ocurrencia en las tablas, no lo entiendo ......
Responder Con Cita
  #7  
Antiguo 07-11-2005
Avatar de Ivanzinho
[Ivanzinho] Ivanzinho is offline
Miembro Premium
 
Registrado: ene 2005
Ubicación: Galicia
Posts: 595
Poder: 20
Ivanzinho Va por buen camino
Prueba con esto :

Código SQL [-]
Select E.lote, Sum(E.kgs), T.articulo,Sum(T.kgs), Sum(T.kgs)/Sum(E.kgs) as Rdto
from Tentradas as E, Ttransformaciones as T
Where E.lote = T.lote
Group By E.lote, T.articulo
__________________
Si no lees esto no vivirás tranquilo
Non lle poñades chatas â obra namentras non se remata. O que pense que vai mal que traballe n’ela; hai sitio para todos. (Castelao)

Última edición por Ivanzinho fecha: 07-11-2005 a las 12:32:53.
Responder Con Cita
  #8  
Antiguo 07-11-2005
rtorioa rtorioa is offline
Miembro
 
Registrado: ene 2005
Posts: 25
Poder: 0
rtorioa Va por buen camino
igual, me sale lo mismo,
¿ que es lo que está mal?
Esto me esta fastidiando ...
Responder Con Cita
  #9  
Antiguo 07-11-2005
Avatar de Ivanzinho
[Ivanzinho] Ivanzinho is offline
Miembro Premium
 
Registrado: ene 2005
Ubicación: Galicia
Posts: 595
Poder: 20
Ivanzinho Va por buen camino
Mira lo probe y si que da el resultado que comentas, yo lo solucione de la sigunete manera

Cree la vista VEntrada donde agrupo todas las entradas del mismo lote en el mismo registro

Código SQL [-]
CREATE VIEW VENTRADA(LOTE,KGS)
AS
select lote, sum(kgs) from Tentrada
Group by lote;

y luego hice la siguiente consulta

Código SQL [-]
Select E.lote, E.kgs, T.articulo,Sum(T.kgs), Sum(T.kgs)/E.kgs as Rdto
from Ventrada E, Ttransformaciones T
Where E.lote = T.lote
Group By E.lote, T.articulo, E.kgs

Así sí funciona, lo probé

Un saludo y espero que te valga esta forma.
__________________
Si no lees esto no vivirás tranquilo
Non lle poñades chatas â obra namentras non se remata. O que pense que vai mal que traballe n’ela; hai sitio para todos. (Castelao)

Última edición por Ivanzinho fecha: 07-11-2005 a las 16:13:36.
Responder Con Cita
  #10  
Antiguo 08-11-2005
rtorioa rtorioa is offline
Miembro
 
Registrado: ene 2005
Posts: 25
Poder: 0
rtorioa Va por buen camino
Utilizo access y no me deja crear vistas, no se si podré hacer algo parecido.
Responder Con Cita
  #11  
Antiguo 08-11-2005
Avatar de Ivanzinho
[Ivanzinho] Ivanzinho is offline
Miembro Premium
 
Registrado: ene 2005
Ubicación: Galicia
Posts: 595
Poder: 20
Ivanzinho Va por buen camino
prueba a hacer lo siguiente a ver si te funciona:

1.-crea la siguiente query

Código Delphi [-]
consulta := '';
consulta := consulta + 'Select lote, articulo,Sum(kgs) kgs ' ;
consulta := consulta + 'from Ttransformaciones ';
consutla := consulta + 'Group By lote, articulo';
 
query.Close;
query.SQL.Clear;
query.SQL.Add(consulta);
query.Open;

2.- Crea dos campos calculados KgsEnt y RdTo donde:
2.1 kgsEnt es :
Código SQL [-]
Select Sum(kgs) from Tentrada
where lote = querylote.value
2.2 y Rdto es:
Código Delphi [-]
Rdto := querykgs.value / querykgsEnt.value;

No lo probe pero debería funcionar, aunque igual hay algún error tonto por el medio pero no creo que te de problema alguno.

Pruébalo y ya me comentarás.

Suerte
__________________
Si no lees esto no vivirás tranquilo
Non lle poñades chatas â obra namentras non se remata. O que pense que vai mal que traballe n’ela; hai sitio para todos. (Castelao)

Última edición por Ivanzinho fecha: 08-11-2005 a las 10:27:46. Razón: Cambio Rdto, los parametros de la división estaban al revés
Responder Con Cita
  #12  
Antiguo 08-11-2005
rtorioa rtorioa is offline
Miembro
 
Registrado: ene 2005
Posts: 25
Poder: 0
rtorioa Va por buen camino
Joer, ahora si q me has liao, no te he entendido muy bien, ¿donde te creas los campos calculados?

Menuda consultita ...
Responder Con Cita
  #13  
Antiguo 08-11-2005
Avatar de Ivanzinho
[Ivanzinho] Ivanzinho is offline
Miembro Premium
 
Registrado: ene 2005
Ubicación: Galicia
Posts: 595
Poder: 20
Ivanzinho Va por buen camino
Cita:
Empezado por rtorioa
Joer, ahora si q me has liao, no te he entendido muy bien, ¿donde te creas los campos calculados?

Menuda consultita ...
Que lenguaje de programación estás usando, di por supuesto que usabas delphi, pero igual supuse de más
__________________
Si no lees esto no vivirás tranquilo
Non lle poñades chatas â obra namentras non se remata. O que pense que vai mal que traballe n’ela; hai sitio para todos. (Castelao)
Responder Con Cita
  #14  
Antiguo 08-11-2005
rtorioa rtorioa is offline
Miembro
 
Registrado: ene 2005
Posts: 25
Poder: 0
rtorioa Va por buen camino
si, uso delphi, pero bueno, como la consulta todavía no la tengo clara la estoy probando en access directamente, luego ya generarla en delphi y mandarla no tengo problema, pero claro, mientras la consulta no funcione....

Creo que me expliqué, gracias y un saludo.
Responder Con Cita
  #15  
Antiguo 08-11-2005
Avatar de Ivanzinho
[Ivanzinho] Ivanzinho is offline
Miembro Premium
 
Registrado: ene 2005
Ubicación: Galicia
Posts: 595
Poder: 20
Ivanzinho Va por buen camino
Cita:
Empezado por rtorioa
si, uso delphi, pero bueno, como la consulta todavía no la tengo clara la estoy probando en access directamente, luego ya generarla en delphi y mandarla no tengo problema, pero claro, mientras la consulta no funcione....

Creo que me expliqué, gracias y un saludo.
Ok, yo con el access no te puedo ayudar mucho, ya que lo único que tengo echo con el son pequeñas BD´s caseras, pero si haces como te comente aqui no creo que tengas ningun problema.

Lo que tienes que hacer es agregar un componente Query a tu formulario, en la propiedad SQL pones :

Código SQL [-]
Select lote, articulo,Sum(kgs) kgs;
from Ttransformaciones
Group By lote, articulo

luego haces dobleclick sobre el componente pinchas con el botón derecho y añades todos los campos, luego creas los campos que te comente anteriormente (KgsEnt y Rdto) pinchando con el botón derecho pero ahora eliges new field (Crea los dos).

En el evento OnCalcField del query calculas el valor de estos dos campos como te comente aqui, para el campo KgsEnt tendras que usar otra query y agregarle la consulta que te indico.

Finalmete solo te quedara asignarle un DataSource y este relacionarlo con una grid.

Si tienes alguna duda sobre la utilización de los querys te recomiendo que te descargues La cara oculta de delphi 4 de aquí el libro tiene cosas que ya se quedaron algo anticuadas (ya tiene sus años) pero para lo que se comentó en este hilo te vale perfectamente.

Espero que lo soluciones lo antes posible (mantenme informado )
__________________
Si no lees esto no vivirás tranquilo
Non lle poñades chatas â obra namentras non se remata. O que pense que vai mal que traballe n’ela; hai sitio para todos. (Castelao)

Última edición por Ivanzinho fecha: 08-11-2005 a las 15:08:39. Razón: cambio nº de post
Responder Con Cita
  #16  
Antiguo 08-11-2005
rtorioa rtorioa is offline
Miembro
 
Registrado: ene 2005
Posts: 25
Poder: 0
rtorioa Va por buen camino
si señor, eres un genio, ya lo solucioné.

Me cré esa tabla en access con un select .... into y hice la consulta que tu me pasaste y.... ¡FUNCIONA!
Muchisimas gracias, te debo una
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 18:12:07.


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