Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Utilizar un valor calculado en un Where (https://www.clubdelphi.com/foros/showthread.php?t=73467)

jazmin 25-04-2011 17:19:31

Utilizar un valor calculado en un Where
 
Hola Chicos :p


Tengo un problema con una sentencia sql:eek:
nunca habia tenido necesidad de hacer una consulta asi donde un valor calculado lo necesitara incluir en la condicion:confused:

miren asi esta mi sentencia original vdd....:rolleyes:

Código SQL [-]
 
Select codigo,(sum(existent)) as ExistenTT,b.formula,b.present,b.concentra
from barras.dbf a,productos.dbf b
where inventario="SI"
and a.codigo=b.codigo
Group By codigo,b.formula,b.present,b.concentra
order by ExistenTT,codigo asc


asi funciona pero no es lo que quiero

lo que quiero es agregar EXistenTT en el Where pero no me lo permite
Código SQL [-]
 
Select codigo,(sum(existent)) as ExistenTT,b.formula,b.present,b.concentra
from barras.dbf a,productos.dbf b
where inventario="SI"
and a.codigo=b.codigo
and ExistenTT="0"
Group By codigo,b.formula,b.present,b.concentra
order by ExistenTT,codigo asc

como lo puedo hacer:confused:

oscarac 25-04-2011 17:23:59

y que condicion seria la que necesitas ?
te recomiendo ademas usar left join en lugar de jalar la informacion de 2 tablas

oscarac 25-04-2011 17:27:23

Seria mas o menos algo asi

Código SQL [-]
Select a.Codigo, Sum (A.Existent) As ExistenTT, B.Formula, b.Present, b.concentra
From Barras a
Left Join Productos B on A.Codigo = B.Codigo
Where b.Inventario = 'SI' 
Group By codigo,b.formula,b.present,b.concentra
Having Sum (A.Existent) = 0
order by ExistenTT,codigo asc

comentas si te funciona

roman 25-04-2011 17:29:49

Cita:

Empezado por jazmin (Mensaje 397908)
Hola Chicos :p

Hola

Cita:

Empezado por jazmin (Mensaje 397908)
nunca habia tenido necesidad de hacer una consulta asi donde un valor calculado lo necesitara incluir en la condicion:confused:

Necesitas poner la condición en la cláusula HAVING:

Código SQL [-]
 
Select codigo,(sum(existent)) as ExistenTT,b.formula,b.present,b.concentra
from barras.dbf a,productos.dbf b
where inventario="SI"
and a.codigo=b.codigo
Group By codigo,b.formula,b.present,b.concentra
having ExistenTT="0"
order by ExistenTT,codigo asc

// Saludos

jazmin 25-04-2011 17:36:20

no funciono
 
mira en una tabla tengo la descripcion del producto y el otra solo el codigo del producto

cuando necesito saber informacion del producto uno las 2 tablas

de cada tipo de producto hay 2 o mas marcas asi que necesito sumar los productos de un mismo tipo aunque sean diferentes marcas y saber cuales existencias tengo agotadas

un poco dificil de explicar no se si me di a entender ji ji ji

la instruccion que me comentaste no funciono me dice capability not soported:(

alguna otra idea?

jazmin 25-04-2011 17:41:41

tampoco funciono roman
 
me manda un mensaje feo :cool: que dice " invalid Field Name ExistenTT "


lo mismo que te decia si pongo Where ExistenTT="0"

segun entiendo es que ExistenTT no es un campo real es una variable que cree en tiempo de ejecucion no?:rolleyes:

o que sera?:confused:

oscarac 25-04-2011 17:42:03

nos gustaria saber que base de datos estas usando
de igual forma si pudieras colocar algunos ejemplo de los datos que manejas
como los tienes y que es lo que esperas obtener, eso nos ayudaria bastante

Algo asi....
ejemplo

Cita:

tabla 1
codigo cantidad
0001 10.00
0002 12.00
Cita:

Tabla2
CodigoMarca Cantidad
0001 15.00
0002 -3.00
Resultado
Cita:

0001 25.00
0002 9.00

oscarac 25-04-2011 17:43:01

Cita:

Empezado por jazmin (Mensaje 397916)
me manda un mensaje feo :cool: que dice " invalid Field Name ExistenTT "


lo mismo que te decia si pongo Where ExistenTT="0"

segun entiendo es que ExistenTT no es un campo real es una variable que cree en tiempo de ejecucion no?:rolleyes:

o que sera?:confused:

entonces usa Having sum(existent) = 0

jazmin 25-04-2011 17:49:30

Ya funciono
 
Wuauu

ya funciono si que son listos ustedes!

pero nunca habia utilizado having explicame que es

porque seguramente va haber cientos de articulos sql por ahi pero me gusta escuchar la explicaciones de las personas que las usan son como mas faciles de entender,
me explicas plis como ultimo favorzote!


ha y muchas gracias!!!!:p

oscarac 25-04-2011 18:00:19

el Having funciona como un filtro que captura lo que en la condicion establezcas

pero no nos dijiste que base de datos utilizas

jazmin 25-04-2011 18:03:04

ha perdon..

uso tablas DataBase IV ;)

ninguna base de datos asi como tal solo tablas independientes

oscarac 25-04-2011 18:04:27

ahhhh ok

si tienes alguna otra duda... trataremos de ayudarte

saludos

ElKurgan 26-04-2011 07:28:03

Creo que, a falta de otra solución, no te queda otro remedio que hacer un select anidado:

Código SQL [-]
 
Select * from (
Select codigo,(sum(existent)) as ExistenTT,b.formula,b.present,
b.concentra
from barras.dbf a,productos.dbf b
where inventario="SI"
and a.codigo=b.codigo
Group By codigo,b.formula,b.present,b.concentra
order by ExistenTT,codigo asc)
where ExistenTT = 0

Esto, al menos en el SQL estandar, funciona

Un saludo

jazmin 26-04-2011 18:11:10

ya lo prove y no funciono
 
Me gusto tu opcion por que no habia usado select animados pero ................me marca un error esa instrucccion
la estoy intentando ingresar a un Query en la propiedad Sql, manejo Tablas Database IV no se que mas decirte je jej je

alguna alternativa o otra forma de declararlo?:(


roman 26-04-2011 18:22:07

En mi opinión, las subconsultas hay que evitarlas siempre que sea posible porque son más lentas. Por otro lado, son selects anidados no animados :)

// Saludos

jazmin 26-04-2011 18:30:07

sorry
 
jajajaja es que es un select bien buena onda jaja esta animado jajaj sorry

fue error de dedo.

psi ya se que hay que evitarlo pero si paso esto un stringgrid y ahi hago una segunda consulta creo que seria mas lento, y si quisiera agotar esta posibilidad.y de paso aprender un poco jeje, voy a abrir un nuevo hilo porque creo que ya es un tema nuevo haber como me va;)

gracias!!!!!


La franja horaria es GMT +2. Ahora son las 15:26:59.

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