none
Consulta SQL RRS feed

  • Pregunta

  • Tengo 3 Tablas

    Recibos_Tabla                            Num_Recibo       Num_Estudiante

                                                            1                      252525

    Recibo_Detalles_Tabla                Num_Recibo                Cant               Descripcion           Cantidad      

                                                            1                           1                      Pagos               100.00

                                                            1                           1                      Desk                 125.00

    Recibos_Pagos_Tabla                  Num_Recibo              Cant_Pago         Tipo_Pago 

                                                            1                             50.00              VISA

                                                            1                            175.00             EFECTIVO

    Necesito que mi consulta se vea de la siguiente manera

    Num_Recibo     Num_Estudiante        Cant      Descripcion       Cantidad         Cant_Pago      Tipo_Pago   

            1                   252525                 1           Pagos              100.00              50.00           VISA

            1                   252525                 1           EFECTIVO         125.00             175.00          EFECTIVO      

    necesito hacer join con todas estas tablas, ya trate pero me duplica los valores y en vez de 2 filas me muestra 4 filas

    Las primeras dos columnas vienen de la tabla Recibos los proximos 3 de la tabla detalles y los ultimos dos de la tabla pagos, gracias

           

    jueves, 2 de abril de 2020 13:49

Todas las respuestas

  • Hola Efrain Diaz

     

    Gracias por levantar tu consulta en los foros de MSDN. Con respecto a la misma, vamos a darte seguimiento e investigaremos para buscar la mejor respuesta para ti.

     

    Gracias por usar los foros de MSDN.

     

    Luis Diego Mora

     ____

     

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. 

     

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.  

     

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.

    jueves, 2 de abril de 2020 14:04
    Moderador
  • Hola Efrain Diaz:

    Deberías de normalizar esas tablas, ya que no parecen tener una relación apropiada, y aunque ahora salgas del problema, más adelante tendrás otros diferentes.

    Normalización

    https://docs.microsoft.com/es-es/office/troubleshoot/access/database-normalization-description

    Una trampa para eso que planteas es utilizar un numerador de filas para relacionar pagos y detalles.

    CREATE TABLE RECIBOS_TABLA (NUM_RECIBO INT, NUM_ESTUDIANTE INT)
    CREATE TABLE RECIBO_DETALLES_TABLA (NUM_RECIBO INT, CANT INT, DESCRIPCION VARCHAR(20), CANTIDAD DECIMAL (5,2))
    CREATE TABLE RECIBO_PAGOS_TABLA (NUM_RECIBO INT, CANT_PAGO DECIMAL(5,2), TIPO_PAGO VARCHAR(20))
    GO
    INSERT INTO RECIBOS_TABLA (NUM_RECIBO, NUM_ESTUDIANTE )
    VALUES
    (1,252525);
    GO
    INSERT INTO Recibo_Detalles_Tabla (Num_Recibo,Cant,Descripcion,Cantidad)
    VALUES
    (1, 1,'Pagos',100.00),
    (1, 1,'Desk' ,125.00);
    GO
    INSERT INTO Recibo_Pagos_Tabla (Num_Recibo,CANT_PAGO,TIPO_PAGO)
    VALUES
    (1, 50.00,'VISA'),
    (1, 175.00,'EFECTIVO');
    GO
    -- fin del escenario. 
    -- Solución
    ;WITH CTE AS (
    	SELECT * FROM RECIBOS_TABLA
    	), Detalles As
    	(
    		Select *, ROW_NUMBER() over(order by (select null)) as row
    		 from RECIBO_DETALLES_TABLA
    	), Pagos As
    	(
    		Select *, ROW_NUMBER() Over(order by (select null)) as row
    		from RECIBO_PAGOS_TABLA
    	)
    	select c.NUM_RECIBO, c.NUM_ESTUDIANTE, d.CANT, d.DESCRIPCION, d.CANTIDAD, p.CANT_PAGO, p.TIPO_PAGO
    	 from CTE c
    		inner join Detalles d on c.NUM_RECIBO = d.NUM_RECIBO
    		inner join Pagos p on c.NUM_RECIBO = p.NUM_RECIBO and d.row = p.row

    jueves, 2 de abril de 2020 15:47
  • Hola , 

      

    ¿Alguna novedad sobre la consulta realizada? ¿Han sido útiles las  respuestas proporcionadas?  

     

    Espero su respuesta. 

      

    Cualquier duda referente a productos Microsoft, puedes consultarnos. Es un gusto informarte. 

    Gracias por usar los foros de MSDN. 

      

    Oscar Navarro

      

     ____ 

      

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.   

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.    

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft. 

    lunes, 6 de abril de 2020 16:47
    Moderador