Necesito ayuda con una consulta SQL en mysql

Publicado en 'Programación' por luis12313, 17 Jun 2013.





  1. luis12313

    luis12313 Miembro frecuente

    Registro:
    28 Jun 2010
    Mensajes:
    104
    Likes:
    8




    Hola a todos, pido colaboracion para que me ayuden con este problema que se me ha presentado.
    Lo que pasa es que estoy llevando Base de datos I y me han dejado esta consulta:

    Realizar un Procedimiento almacenado que reajuste el monto total comprado de la tabla documento. Considerar que debe coincidir el monto total de la tabla documento con lo que se indica en la tabla detalledocumento.

    Espero me puedan guiar y ayudar, estoy usando mysql y navicat. Salu2

    [​IMG]
     


  2. drkrap

    drkrap Miembro de bronce

    Registro:
    18 Ene 2011
    Mensajes:
    1,345
    Likes:
    304
    mmmm..... si te diéramos la respuesta en lugar de hacerte un bien te haríamos un mal, es necesario desarrollar la lógica para poder realizar las consultas, creeme, mas adelante necesitaras esas lógicas. como apoyo te puedo comentar que para realizar esa validación tienes que primero:
    1- encontrar con el monto total del documento (via la pk id), esta data tienes que contrartarla (compararla) con la sumatoria de todos los productos que tiene id = al documento que quieres contrastar.

    eso funcionaria para 1 consulta, para que sea mas discriminante la tabla detalledocumento deberia de tener fecha y hora, ademas del id del proveedor.

    saludos y exitos en tus estudios.
     
  3. luis12313

    luis12313 Miembro frecuente

    Registro:
    28 Jun 2010
    Mensajes:
    104
    Likes:
    8
    En resumen, no sabes como hacerlo :errr:, pero bueno gracias de todas formas.
     
  4. drkrap

    drkrap Miembro de bronce

    Registro:
    18 Ene 2011
    Mensajes:
    1,345
    Likes:
    304
    Se como hacerlo pero no te daria la tarea hecha..post data tu diseño esta mal
     
  5. luis12313

    luis12313 Miembro frecuente

    Registro:
    28 Jun 2010
    Mensajes:
    104
    Likes:
    8
    Bueno ya que no me pudiste ayudar, tengo el agrado de decirte que si lo pude hacer:
    DROP PROCEDURE IF EXISTS sp_ActualizarMontos;
    CREATE PROCEDURE sp_ActualizarMontos()
    BEGIN
    DECLARE v_id_documento varchar(8);
    DECLARE v_monto_total float;
    DECLARE v_multi_cantpre float;
    DECLARE cur_docu CURSOR FOR select id_documento,monto_total from tb_documento;
    OPEN cur_docu;
    recorrido : LOOP
    FETCH cur_docu INTO v_id_documento,v_monto_total;
    SET v_multi_cantpre=(SELECT (precio*cantidad)
    FROM tb_detalle_documento as A,
    tb_producto as B,
    tb_documento as C
    WHERE A.id_producto=B.id_producto
    and A.id_documento=C.id_documento
    and A.id_documento=v_id_documento);
    IF v_multi_cantpre<>v_monto_total THEN
    UPDATE tb_documento SET monto_total=v_multi_cantpre WHERE id_documento=v_id_documento;
    END IF;
    END LOOP recorrido;
    CLOSE cur_docu;
    END


    call sp_ActualizarMontos();

    :yeah: que lamentable que haya gente tan egoista como tu. Salu2
     
  6. drkrap

    drkrap Miembro de bronce

    Registro:
    18 Ene 2011
    Mensajes:
    1,345
    Likes:
    304
    Bien te felicito por tu respuesta... egoista hubiera sido si es q te huviera dado la respuesta...
    Si a un hombre quieres que no pase hambre... dale una caña de pescar antes q un pescado....

    Saludos y suerte en tus estudios
     
    Última edición: 18 Jun 2013
  7. sk8duyyy

    sk8duyyy Suspendido

    Registro:
    11 Mar 2011
    Mensajes:
    677
    Likes:
    68
    yo antes sufria con estos temas y habia gente que sabia y nunca me ayudaba dandome aunque sea x una vez la respuesta en casos de emergencia mia, resultado jale el curso.
    Yo hacia todo lo contrario, en mi ramo (osea mi fuerte) cuando me pedian ayuda en examen final, al ver sus caras, yo les ayudaba y ahora ellos siguen estudiando y ya van x terminar creo, yo lo deje hace mucho.
    No es malo ayudar asi, creeme, le brindas mucha felicidad al que lo necesita, y eso es lo mas importante, si te encuentras en una situacion parecida, espero que te ayuden y que no sean como tu.

    JESUSCRISTO dijo, "si alguien te pide, dale sin recibir nada a cambio",
     
    Última edición: 24 Jun 2013
    A luis12313 le gustó este mensaje.
  8. eltrome12

    eltrome12 Suspendido

    Registro:
    21 May 2013
    Mensajes:
    289
    Likes:
    28
    primero deberias reestructurar bien tus tablas. Por que tipodocumento esta en una tabla a parte. Si con tipo ya se soluciona.
     
  9. chal2

    chal2 Miembro nuevo

    Registro:
    26 Oct 2012
    Mensajes:
    27
    Likes:
    4
    tu actitud fue buena en no darle el trabajo hecho , el mismo debio encontrar la solución
    esto lo digo por q cuando llevava tp1 , habia un tema q no entendia en java de graficos y otros temas cmo polimorfismo y herencia multiple , le pedi a un pata q me pasara los trabajos para darle ala profesora , el me dijo q le pague y yo en mi mente dije , pff este ta weon
    y estos temas venian en el examen final , asi q me mate repasando y averiguando por mi mismo para aprender y lograr aprobar , lo grandioso fue que le meti tanto empeño que domine estos temas ala perfección y aprobe con 17 en esa ves ,, desde ahi me quedo claro que es mejor esforzarse uno mismo ,

    lo que si uno debe hacer es brindarle ayuda al que lo necesita diciendole como debe de hacerlo o que pasos a seguir , pero no darle el trabajo hecho ...
    estoy de acuerdo contigo ...
     
  10. luis12313

    luis12313 Miembro frecuente

    Registro:
    28 Jun 2010
    Mensajes:
    104
    Likes:
    8
    Lo malo es que ese sujeto ni me ayudo o_O un poco siquiera, entonces deberia agradecerle jeje, que le agradezca su abue.. yo no suelo pedir que me hagan las tareas, solo que en ocasiones de desesperacion uno crea estos temas y la verdad da colera que te den la espalda. :ptm:

    cuando alguien me pide ayuda yo la doy, hasta donde puedo, ahora si el pata lo sabe todo y quiere dar una leccion de vida que se vaya a la ... y que mejor no conteste el post. Ademas un foro es para dar ayuda, si no lo hicieran entonces no habria sentido de crearla.
     
  11. sk8duyyy

    sk8duyyy Suspendido

    Registro:
    11 Mar 2011
    Mensajes:
    677
    Likes:
    68
    si pz man, me acuerdo q cuando yo taba estudiando, se junto un grupito de 3 o 4, eras los mas nerds, jeje perdon los mas chanconcitos en programación, se juntaron y se ayudaban entre ellos, pero cuando había otros cursos, me daba risa sus caras, no sabían nada; yo les ayudaba a otros, pero claro eso solo era en ocasioooones, y a la próxima ellos deben de esmerarse mas.
    cuando yo queria ayuda, naaadie me ayudaba, como dije jale y me quite de estudiar; bueno amenos conseguí una novia jeje.

    y te doy toda la razón, el brother no te ayudo en nada; pero eso si man, si ya te estas esforzando, hazlo aun mas; tengo varios brothers que se confiaron mucho en el ultimo siglo y jalaron, y ahora están tratando de nivelarse.
    Como todo en este mundo es negocio, los profes te la hacen mas difíciles al ultimo siglo para que repruebes, vuelvas a tomar el curso, osea pagara mas x mas tiempo.
    Suerte man, logra lo que no pude lograr, ahora estoy trabajando independiente, y si bien gano lo suficientemente bien (casi como un profesional); pero hubiera preferido ser un profesional; debes ser vivaz, y actualizarte no solo en tus estudios, sino en la educacion de negocios; como dije este mundo gira a travez de ellos; mira cuantos profesionales están taxiando, uno creen que solo deben ser profesionales y ya esta, MAL, debes tener conocimientos financiero, para poder generar dinero.
    ESTO YA PARECE SERMÓN, SI DESEAS ME IGNORAS, pero a muchos les doy consejos y al no hacerlo, les pasa lo que dije XDDD; tomalo en cuenta y suerte en tu vida espiritual y cotidiana, bye.
     
  12. drkrap

    drkrap Miembro de bronce

    Registro:
    18 Ene 2011
    Mensajes:
    1,345
    Likes:
    304
    Como q no te ayude.. ni siquiera leyeron todo lo q escribi... te dije la logica... ahi tenias q convertirlo a codigo es mas te puse una recomendacion para q sea mas discriminante.. ahora hay q darles todo mastixado
     
  13. luis12313

    luis12313 Miembro frecuente

    Registro:
    28 Jun 2010
    Mensajes:
    104
    Likes:
    8
    ya bueno bro, ya fue :biggrin:

    Haber ahora que ya estamos confraternizando xD, tengo un problema con un trabajo que estoy haciendo, quiero Actualizar automáticamente el Tipo Documento por cada Monto Total recaudado por Año siguiendo como ejemplo esta sentencia:

    SELECT year(fecha) as annio,
    round(sum(case when id_tipdoc='00001' then monto_total end),2) as Boleta,
    round(sum(case when id_tipdoc='00002' then monto_total end),2) as Factura,
    round(sum(case when id_tipdoc='00003' then monto_total end),2) as Recibo
    FROM tb_documento A
    group by 1

    Estuve haciendolo y todo me sale muy bien, solo que al costado siempre se muestra el numero 1 en un columna asi como se muestra en la imagen, lo que quiero saber es si es normal que salga eso al crear un cursor o si algo estare haciendo mal:

    [​IMG]

    Tambien aqui les dejo el codigo que hice hasta el momento: