none
Filtrar una tabla con 2 campos de otra tabla RRS feed

  • Pregunta

  • Buenas Noches.

    Les tengo una Pregunta. Estoy en sql server 2005

    digamos que mi base de datos se llama   BD

    y tengo 2 tablas (tabla1,tabla2) con 2 campos cada uno (campo1,campo2) en las 2 tablas

    digamos que tengo lo siguiente

       tabla 1                                             tabla2

    campo1 | campo2                     campo1|campo2

    a                 1                                 a          1

    a                 2                                 b          1

    b                 1                                 c          1

    b                 2 

    c                 1

    c                  2

    mi pregunta como puedo hacer para que mi consulta me muestre la tabla1  los campos no identicos a tabla 2

    ej de resultado

    campo1 | campo2

    a                2

    b                2

    c                 2

    y viceversa( que sea identicos a la tabla2)

    Soy novato en sql y lo eh estado pensando por horas y no doy con la respuesta. Gracias de antemano




    • Editado SQl novate martes, 14 de agosto de 2012 6:32
    martes, 14 de agosto de 2012 5:57

Respuestas

  • Hola.

    Los que son comunes con un inner join y los que están en una pero no en la otra con un left join:

    --Los que son iguales
    select t1.campo1, t1.campo2
    from 
      tabla1 t1 inner join 
      tabla2 t2 on t1.campo1 = t2.campo1 and t1.campo2 = t2.campo2
    
    --Los registros de tabla1 que no están en la tabla2
    select t1.campo1, t1.campo2
    from 
      tabla1 t1 left join 
      tabla2 t2 on t1.campo1 = t2.campo1 and t1.campo2 = t2.campo2
    where t2.campo1 is null
    

    Si tienes dudas, nos dices.


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.com
    Sígueme en twitter en http://twitter.com/qwalgrande

    • Marcado como respuesta Eder Costa jueves, 16 de agosto de 2012 18:39
    martes, 14 de agosto de 2012 9:39
    Moderador

Todas las respuestas

  • Hola.

    Los que son comunes con un inner join y los que están en una pero no en la otra con un left join:

    --Los que son iguales
    select t1.campo1, t1.campo2
    from 
      tabla1 t1 inner join 
      tabla2 t2 on t1.campo1 = t2.campo1 and t1.campo2 = t2.campo2
    
    --Los registros de tabla1 que no están en la tabla2
    select t1.campo1, t1.campo2
    from 
      tabla1 t1 left join 
      tabla2 t2 on t1.campo1 = t2.campo1 and t1.campo2 = t2.campo2
    where t2.campo1 is null
    

    Si tienes dudas, nos dices.


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.com
    Sígueme en twitter en http://twitter.com/qwalgrande

    • Marcado como respuesta Eder Costa jueves, 16 de agosto de 2012 18:39
    martes, 14 de agosto de 2012 9:39
    Moderador
  • Gracias, Alberto

    Disculpa por no haber respondido, no eh tenido el tiempo suficiente, y ademas me olvide jeje.!

    De todas maneras me aclaraste el panorama. 

    Muchas Gracias.

    Saludos


    Lk

    sábado, 1 de septiembre de 2012 4:51