Curso Lenguaje GO

Ayuda con consulta SQL

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

  • 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...

  • #2
    Re: Ayuda con consulta SQL

    Prueba
    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
    Una visita a las Normas del foro nunca viene mal

    Comentario


    • #3
      Re: Ayuda con consulta SQL

      Originalmente escrito por gilman Ver mensaje
      Prueba
      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
      Muchísimas gracias amigo !, funcionó de maravilla !, qué alentador es saber que esciste gente como tú, dispuesta a ayudar alos demás...

      Puedo abusar de tu gentileza y hacerte una consulta más ?

      La consulta que me preparaste me devuelve todos los registros.. Cómo hago otra,para que además filtre por tb_productos.prod_desc, para realizar una búsqueda con la instrucción '%like%' (busqueda por un string en el campo descripción)

      Muchas gracias una vez más !

      Jorge Luna

      Comentario


      • #4
        Re: Ayuda con consulta SQL

        Hola, amigo Jorge Luna

        Como veo que gilman no está conectado en este momento, paso a dar respuesta a tu nueva consulta, pidiéndole disculpas a gilman, cosa que no tendría que hacerse si tú no te hubieras dirigido personalmente a él, como se aconseja en las Normas del foro, que debieras haber leído antes de iniciar tus posts...

        Sustituye la línea
        Código:
        where tb_productos.prod_cod= tb_movimientos.prod_cod
        por
        Código:
        where tb_productos.prod_desc like ' & Text1.Text & "' And tb_productos.prod_cod= tb_movimientos.prod_cod
        para el caso de que la descripción por la que quieras filtrar la tengas en Text1.Text.
        José María Movilla Cuadrado
        ______________________
        Normas del foro
        www.foro.vb-mundo.com
        www.vb-mundo.com

        Comentario


        • #5
          Re: Ayuda con consulta SQL

          Muchas gracias amigo por tu ayuda pero, me da un error.

          La consulta quedaría:

          SELECT tb_productos.prod_cod, tb_productos.prod_desc,SUM( IIF(tipo_mov = 'I', prod_cantidad, -prod_cantidad)) AS TOTAL FROM tb_productos, tb_movimientos
          WHERE tb_productos.prod_desc like '%alum%' And tb_productos.prod_cod= tb_movimientos.prod_cod
          GROUP BY tb_productos.prod_cod, tb_productos.prod_desc

          he puesto el string 'alum', porque en dos registros está la palabra 'Aluminio'

          Si dejo la instrucción GROUP BY, no me retorna ningún registro.
          Si la quito, me da el siguiente error:

          "Ha intentado ejecutar una consulta que no incluye la expresión especificada 'prod_cod' como parte de una función de agregado.

          Muchos saludos,

          Jorge

          Comentario


          • #6
            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
            Una visita a las Normas del foro nunca viene mal

            Comentario


            • #7
              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)
              José María Movilla Cuadrado
              ______________________
              Normas del foro
              www.foro.vb-mundo.com
              www.vb-mundo.com

              Comentario


              • #8
                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 !

                Comentario


                • #9
                  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
                  Una visita a las Normas del foro nunca viene mal

                  Comentario


                  • #10
                    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%'
                    José María Movilla Cuadrado
                    ______________________
                    Normas del foro
                    www.foro.vb-mundo.com
                    www.vb-mundo.com

                    Comentario


                    • #11
                      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

                      Comentario


                      • #12
                        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.
                        José María Movilla Cuadrado
                        ______________________
                        Normas del foro
                        www.foro.vb-mundo.com
                        www.vb-mundo.com

                        Comentario


                        • #13
                          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.
                          Una visita a las Normas del foro nunca viene mal

                          Comentario


                          • #14
                            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...
                            José María Movilla Cuadrado
                            ______________________
                            Normas del foro
                            www.foro.vb-mundo.com
                            www.vb-mundo.com

                            Comentario


                            • #15
                              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

                              Comentario

                              Trabajando...
                              X