none
CONSULTA A MULTIPLE TABLAS RRS feed

  • Pregunta

  • Hola amigos tengo un problema 

    Tengo dos tablas le planteo el problema

    Tabla1 Tabla2
    Nosol No_Comp

    Nosol

    Como a ser para extraer los datos de la  tabla2 solo el campo No_comp  y poner en la tabla 1

    al hacer el la tabla1 me muestra 99 filas que esta bien pero no me da el campo de la tabla2

    pero cuando le hago el RIGH OUTER JOIN  la tabla1 me da 23

    y nesecito que me 99

    de esta manera:

    Tabla1 Tabla2
    Nosol No_Comp
    No_Comp Nosol

    Espero su ayuda Gracias



    miércoles, 7 de septiembre de 2016 16:35

Respuestas

  • DOSA_INFORMATICA,

    El conjunto de la izquierda 'Tabla1' contiene todas las filas que deseas combinar con otro conjunto para recuperar las filas donde los valores de las columnas -de ambas tablas- podrían coincidir (hacer match); la descripción que realizo refiere claramente a combinar filas mediante LEFT [OUTER] JOIN.

    SELECT
        t1.Nosol,
        t2.No_Comp
    FROM 
        Tabla1 t1
        LEFT JOIN Tabla2 t2 ON (t1.Nosol = t2.Nosol);

    Sin embargo, mencionas (o por lo menos eso entendí) que deseas agregar el valor coincidente en una nueva columna de la tabla 'Tabla1':

    --Agregar nueva columna
    ALTER TABLE Tabla1 ADD No_Comp int NULL;
    
    --Actualizar los datos a la nueva columna según coincidencia
    UPDATE  t1
    SET
        t1.No_Comp = t2.No_Comp
    FROM 
        Tabla1 t1
        LEFT JOIN Tabla2 t2 ON (t1.Nosol = t2.Nosol);


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Propuesto como respuesta Camilo A. Villa jueves, 8 de septiembre de 2016 15:13
    • Marcado como respuesta DOSA_INFORMATICA jueves, 8 de septiembre de 2016 15:41
    jueves, 8 de septiembre de 2016 5:23

Todas las respuestas

  • Primero tenes que crear la columna No_Comp en la tabla1 y luego hacer un update. 
    Update t1 set t1.No_Comp = t2.No_Comp
    From tabla1 t1 inner join tabla2 t2 ON t1.Nosol = T2.NoSol


    Carlos Ignacio Aguero. DBA SQL Server. Toda mi respeto al pueblo Peruano por la ayuda prestada en la guerra de Malvinas.

    miércoles, 7 de septiembre de 2016 16:42
  • Pudieras postear el query que usas?

    select A.nosol, B.no_comp
    from Tabla2 as B right outer join Tabla1 as A on A.nosol = B.nosol;

    select A.nosol, B.no_comp
    from Tabla1 as A left outer join Tabla2 as B on A.nosol = B.nosol;

    En palabras seria algo asi como mostrar todas las filas de Tabla1 y el valor de la columna [no_comp] de Tabla2 en las filas que machen y NULL como marca para las filas que no machen.

    En los queries OUTER JOIN la tabla cuyas filas se preservan es la del lado indicado LEFT/RIGHT.


    AMB

    Some guidelines for posting questions...

    AYÚDANOS A AYUDARTE, guía básica de consejos para formular preguntas



    • Editado HunchbackMVP miércoles, 7 de septiembre de 2016 17:29
    miércoles, 7 de septiembre de 2016 17:25
  • Para obtener todos los registros de Tabla1 y el campo No_Comp relacionado con cada uno de ellos en Tabla2 sería algo como:

    Select Nosol, No_Comp From Tabla1 Left Join Tabla2 On Tabla1.Nosol = Tabla2.Nosol


    Saludos, Javier J

    miércoles, 7 de septiembre de 2016 17:28
  • DOSA_INFORMATICA,

    El conjunto de la izquierda 'Tabla1' contiene todas las filas que deseas combinar con otro conjunto para recuperar las filas donde los valores de las columnas -de ambas tablas- podrían coincidir (hacer match); la descripción que realizo refiere claramente a combinar filas mediante LEFT [OUTER] JOIN.

    SELECT
        t1.Nosol,
        t2.No_Comp
    FROM 
        Tabla1 t1
        LEFT JOIN Tabla2 t2 ON (t1.Nosol = t2.Nosol);

    Sin embargo, mencionas (o por lo menos eso entendí) que deseas agregar el valor coincidente en una nueva columna de la tabla 'Tabla1':

    --Agregar nueva columna
    ALTER TABLE Tabla1 ADD No_Comp int NULL;
    
    --Actualizar los datos a la nueva columna según coincidencia
    UPDATE  t1
    SET
        t1.No_Comp = t2.No_Comp
    FROM 
        Tabla1 t1
        LEFT JOIN Tabla2 t2 ON (t1.Nosol = t2.Nosol);


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Propuesto como respuesta Camilo A. Villa jueves, 8 de septiembre de 2016 15:13
    • Marcado como respuesta DOSA_INFORMATICA jueves, 8 de septiembre de 2016 15:41
    jueves, 8 de septiembre de 2016 5:23