Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-08-2013
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is online now
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.695
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Pienso que no es la forma de hacer eso. Es como si se pincha la rueda del coche y en lugar de arreglarla le haces un "invento"
Responder Con Cita
  #2  
Antiguo 13-08-2013
mjjj mjjj is offline
Miembro
 
Registrado: mar 2007
Posts: 652
Poder: 20
mjjj Va por buen camino
completamente de acuerdo, como lo harías??
Responder Con Cita
  #3  
Antiguo 13-08-2013
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is online now
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.695
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Pues como tú mismo has indicado, pasándole los parámetros necesarios.
Así, a simple vista, no creo que necesites el "execute statement".
Responder Con Cita
  #4  
Antiguo 13-08-2013
mjjj mjjj is offline
Miembro
 
Registrado: mar 2007
Posts: 652
Poder: 20
mjjj Va por buen camino
Bueno lo voy a revisar, pero sin consulta no era respecto a esa parte del procedimiento, sino es al momento de condicionar las busqueda del query general, que consulta a la tabla "insumos_servicios". Adjunto procedimiento modificado.
Código SQL [-]
begin

for select id_item, i_s.nombre, i_s.id_clasificacion from insumos_servicios I_S
INNER JOIN clasificaciones c on c.id_clasificacion = i_s.id_clasificacion
where que_es = 'T' AND estructura = 0 
and nombre like :nombre /* nueva linea */
into :id_item, :nombre, :id_clasificacion do
begin
execute statement
'select coalesce(sum(cantidad * precio)/sum(iif(cantidad = 0,1,cantidad)),0),
coalesce(sum(cantidad),0) from inventario
where id_item ='||:id_item||' and id_bodega in '||(:bodegas)
into recio_medio, :cantidad_ingreso;


execute statement
'select coalesce(avg(precio),0), coalesce(sum(cantidad),0) from inventario_egreso
where id_item ='||:id_item||' and id_bodega in '||(:bodegas)
into recio_egreso, :cantidad_egreso;

suspend;
end
end

Esto funciona bien siempre y cuando el usuario desee buscar por algún items en especifico, sin embargo, imaginense que el usuario desea revizar la lista completa de items, la nueva condición me impediría hacer esto, ya que si o si es necesario pasar este valor en el query original.

Nombre es una nueva variable de entrada.
Pueden existir mas de una nueva condicion de busqueda.

Se les ocurre como solucionar esto?
Responder Con Cita
  #5  
Antiguo 13-08-2013
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is online now
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.695
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Cita:
Empezado por mjjj Ver Mensaje
sin embargo, imaginense que el usuario desea revizar la lista completa de items
Esa parte no la entiendo.
Responder Con Cita
  #6  
Antiguo 13-08-2013
mjjj mjjj is offline
Miembro
 
Registrado: mar 2007
Posts: 652
Poder: 20
mjjj Va por buen camino
es el caso que el usuario desee revisar la lista completa de items, es decir, la nueva linea del procedimiento debiese eliminarse o no considerarse, para que no filtre por esta condición.

El tema es que no modificar en tiempo de ejecución el procedimiento según sea el requerimiento del usuario, ese es el tema principal !!!!
Responder Con Cita
  #7  
Antiguo 13-08-2013
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is online now
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.695
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Creo que estoy dormido, porque no me entero que quiéres decir

es el caso que el usuario desee revisar la lista completa de items,
¿Qué lista, qué items?

es decir, la nueva linea del procedimiento debiese eliminarse o no considerarse, para que no filtre por esta condición.
¿La nueva línea?, ¿qué es la 'nueva línea'?, ¿eliminarse?

El tema es que no modificar en tiempo de ejecución el procedimiento según sea el requerimiento del usuario, ese es el tema principal !!!!
Sigo sin entender.

Llámame torpe, pero no lo comprendo
Responder Con Cita
  #8  
Antiguo 13-08-2013
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.418
Poder: 24
fjcg02 Va camino a la fama
Hola,
así a bote pronto creo que puedes sustituir el procedimiento almacenado por una vista. Después podrías hacer los filtros que quieras.
Para ello tendrías que incluir el campo id_bodega en la vista, ya que el campo id_clasificación ya lo tienes.

En definitiva, haz una vista con la consulta de las tablas insumos_servicios, clasificaciones, inventario, inventario_egreso, utiliza funciones de agregado y agrupa por id_item.

Código SQL [-]
select i_s.id_item, max(i_s.nombre) AS NOMBRE, max(i_s.id_clasificacion) AS ID_CLASIFICACION , coalesce(sum(inv.cantidad * inv.precio)/sum(iif(inv.cantidad = 0,1, 
          inv.cantidad)),0) AS PRECIO_MEDIO, coalesce(sum(inv.cantidad),0) AS CANTIDAD_INGRESO,
          coalesce(avg(inv_e.precio),0) AS PRECIO_EGRESO, coalesce(sum(inv_e.cantidad),0) AS CANTIDAD_EGRESO, max(id_bodega) AS ID_BODEGA

from insumos_servicios I_S
INNER JOIN clasificaciones c on c.id_clasificacion = i_s.id_clasificacion
INNER JOIN inventario inv on id_item = i_s.id_item
INNER JOIN inventario_egreso inv_e on id_item = i_s.id_item

where i_s.que_es = 'T' AND i_s.estructura = 0 
GROUP BY i_s.id_item

Te lo he puesto de memoria, seguro que hay algún fallo desintaxis.
Una vez tengas la vista, montas el filtro de las bodegas y/o agrupas por ellas.

Espero que te sirva.

Un saludo
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -

Última edición por Casimiro Noteví fecha: 13-08-2013 a las 23:28:31.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Fecha con condiciones rufo Varios 17 07-04-2010 00:44:51
Paradox--->Condiciones lurad Tablas planas 2 19-09-2006 20:45:40
Condiciones Carlex SQL 7 09-08-2004 21:15:33
Condiciones en SQL agova SQL 5 20-07-2004 01:28:24
condiciones en interbase squenda Conexión con bases de datos 5 29-03-2004 02:54:49


La franja horaria es GMT +2. Ahora son las 15:30:22.


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