Curso Lenguaje GO

Ayuda con consulta SQL

Colapsar
X
  • Filtrar
  • Tiempo
  • Mostrar
Limpiar todos
nuevos mensajes

  • Jorge Luna
    inició un tema Ayuda con consulta SQL

    Ayuda con consulta SQL

    Estimados amigos, me acabo de registrar, ya que necesito de la ayuda de ustedes. Debo realizar una consulta SQL combinada entre dos tablas no relacionadas, para obtener dos campos de la primera tabla, y un tercer campo de tipo resultado, desde la segunda tabla.

    Espero poder explicarme:

    Tabla 1

    Nombre: tb_productos

    Campos:
    prod_cod
    prod_desc

    Tabla 2

    Nombre: tb_movimientos

    Campos:
    prod_cod
    tipo_mov
    prod_cantidad

    El campo tipo_mov tiene dos tipos de valores, I y E (ingreso y egreso)

    Necesito realizar una consulta donde me devuelva el código de producto y descripción desde la tabla 1 más la diferencia (Ingresos - Egresos) desde la tabla 2, para cada código en la Tabla 1.

    El archivo adjunto muestra la estructura de ambas tablas

    Por ejemplo, para el código de producto '001' el tercer campo de la consulta debería ser 4 ya que la suma de los valores 'I' menos la suma de los valores 'E' dan como resultado 4.

    Espero haberme explicado ya que reconozco que es bastante enredado esto.

    Muchísimas gracias a quien me pueda echar una mano...

  • J_M_Movilla
    respondió
    Re: Ayuda con consulta SQL

    Originalmente escrito por gilman Ver mensaje
    Deberías añadir la clausula:
    Código:
    HAVING SUM( IIF(tipo_mov = 'I', prod_cantidad, -prod_cantidad)) > 0
    al final de la consulta
    Y ¡mira que lo dejaste bien claro en tu anterior mensaje dentro de este mismo post!!! Pero cuando uno tiene que ir por la derecha va por la izquierda y viceversa...

    Deja un comentario:


  • gilman
    respondió
    Re: Ayuda con consulta SQL

    Deberías añadir la clausula:
    Código:
    HAVING SUM( IIF(tipo_mov = 'I', prod_cantidad, -prod_cantidad)) > 0
    al final de la consulta

    Deja un comentario:


  • Jorge Luna
    respondió
    Re: Ayuda con consulta SQL

    Estimado, ya probé añadiendo ese criterio pero me da el siguiente error:

    No se han especificado valores para algunos de los parámetros requeridos.

    Si es consulta la ejecuto directamente en Access, me pide un valor para "total"

    Deja un comentario:


  • J_M_Movilla
    respondió
    Re: Ayuda con consulta SQL

    Naturalmente deberás añadir en el WHERE de la SQL el criterio " AND Total > 0" para el caso de que selecciones que no se presenten las líneas con Stock = 0.

    Deja un comentario:


  • Jorge Luna
    respondió
    Re: Ayuda con consulta SQL

    Estimado José María... he podido avanzar mucho en mi proyecto, gracias a tu ayuda y a la de nuestro otro amigo gilman. En tu última respuesta hablas de problemas que atascan demasiado... pues bien, aquí estoy nuevamente frente a uno de estos tan amables problemas, y quisiera poder contar nuevamente con tu gran voluntad de ayudar:

    La Datagrid que estoy adjuntando, está siendo llenada mediante la consulta SQL que tú y gilman me ayudaron a desarrollar. Esta Datagrid tiene una columna "Stock" que muestra el resultado producto de la parte de la consulta "SUM( IIF(tipo_mov = 'I', prod_cantidad, -prod_cantidad)) AS total".

    Mi "atascamiento" va por el tema que, quisiera poder incluir en mi formulario, un control CheckBox, que controlara si quiero obtener registros con stock en cero, o no. He intentado hacer esto modificando la consulta y agregando por ahí algunas condiciones, pero no me ha resultado.

    Podrías por favor ayudarme una vez más ?

    Desde ya te agradezco el sólo hecho de responderme...

    Muchos saludos,

    Jorge

    Deja un comentario:


  • J_M_Movilla
    respondió
    Re: Ayuda con consulta SQL

    Amigo gilman: el hecho de que haya funcionado con having y no haberlo hecho con where me ha llevado a deducir que en eso estaba el quid... Ya sabes que yo no soy informático titulado, sino simplemente un aficionado con experiencia de muchos años, pero sin maestros oficiales; así que no me queda más remedio que ir agradeciéndoos a vosotros, los profesionales, que vais depurándome paso a paso. Pero ya podéis daros prisa, que con mis 82 añarros, creo que no os queda mucho tiempo para completar mi formación...

    Deja un comentario:


  • gilman
    respondió
    Re: Ayuda con consulta SQL

    Originalmente escrito por J.M.Movilla Ver mensaje
    Es una gran alegría dar con la solución a estos problemas que se atascan demasiado... Te doy un consejo para que no te vuelva a ocurrir lo que nos ha pasado a todos los que hemos intervenido: Grábate esto: Cuando uses GROUP no te olvides de HAVING.
    En el WHERE debería funcionar perfectamente, siempre teniendo en cuenta el tema comentado de las mayusculas.
    Yo el HAVING siempre lo uso para realizar condiciones sobre funciones de agregado, como COUNT(CAMPO)>2, para localizar solo los registros que repiten dicho campo, SUM(CAMPO)>0 para localizar solo los registros que tienen un saldo positivo...
    y en la clausula WHERE refiero a las condiciones de filtrado con independencia de si estamos haciendo o no una consulta de agregado.

    Deja un comentario:


  • J_M_Movilla
    respondió
    Re: Ayuda con consulta SQL

    Es una gran alegría dar con la solución a estos problemas que se atascan demasiado... Te doy un consejo para que no te vuelva a ocurrir lo que nos ha pasado a todos los que hemos intervenido: Grábate esto: Cuando uses GROUP no te olvides de HAVING.

    Deja un comentario:


  • Jorge Luna
    respondió
    Re: Ayuda con consulta SQL

    Estimadísimo... ahora sí funciona la consulta ! Muchísimas gracias por tu aporte.. Estoy verdaderamente agradecido por tu tiempo y disposición a ayudarme...

    Muchas gracias otra vez !

    Jorge Luna

    Deja un comentario:


  • J_M_Movilla
    respondió
    Re: Ayuda con consulta SQL

    Posiblemente funcione mejor con
    Código:
    SELECT tb_productos.prod_cod, tb_productos.prod_desc, _
           sum( IIF(tipo_mov = 'I', prod_cantidad, -prod_cantidad)) total 
    from tb_productos, tb_movimientos 
    where tb_productos.prod_cod = tb_movimientos.prod_cod 
    group by tb_productos.prod_cod, tb_productos.prod_desc
    having UCase(tb_productos.prod_desc) like '%ALUM%'

    Deja un comentario:


  • gilman
    respondió
    Re: Ayuda con consulta SQL

    Originalmente escrito por Jorge Luna Ver mensaje
    Estimado José María, tampoco funciona con esa modificación de la condición.

    He probado con muchísimas consultas y ninguna me da resultados...

    Le agradezco enormemente su ayuda...

    Muchas gracias !
    Debería funcionar, solo que como te comento en post anterior, debes tener en cuenta las mayusculas y minusculas, tal y como está escrita la condición encontrará el producto aluminio, pero no Aluminio

    Deja un comentario:


  • Jorge Luna
    respondió
    Re: Ayuda con consulta SQL

    Estimado José María, tampoco funciona con esa modificación de la condición.

    He probado con muchísimas consultas y ninguna me da resultados...

    Le agradezco enormemente su ayuda...

    Muchas gracias !

    Deja un comentario:


  • J_M_Movilla
    respondió
    Re: Ayuda con consulta SQL

    Me parece extraño que aparezca ese error al añadir el criterio de selección...
    Prueba con
    Código:
    WHERE (tb_productos.prod_desc like '%alum%' And tb_productos.prod_cod= tb_movimientos.prod_cod)

    Deja un comentario:


  • gilman
    respondió
    Re: Ayuda con consulta SQL

    Entiendo que alum es un literal, pero debería tener en cuenta las mayúsculas y minúsculas ya que Aluminio no es lo mismo que aluminio, y por tanto no lo encontrará.
    Por otro lado el segundo mensaje, el del error, es lo normal, ya que si se usan funciones de agregado, SUM, MAX, etc, solo pueden usarse campos fuera de dichas funciones si están incluidos en la lista de campos de la clausula GROUP BY

    Deja un comentario:

Trabajando...
X