none
Como devolver registros que no coincidan entre 2 tablas mysql RRS feed

  • Pregunta

  • Buenas tardes como el titulo lo dice estoy tratando de recuperar registros que no coinciden entre dos tablas en una tabla digamos t1 tengo (id,idpkt1,hora1,hora2) y en la otra tabla t2 trato tengo (id,idpkt1,he,hs,rsl) lo que quiero es que me regrese los registros que estan en tabla 1(t1) pero que no se encuentra en la tabla 2(t2) la instruccion que ocupo  es la siguiente 

    mysql> select t1.idpk,t1.hora1 from t1 left join t2 on t1  t1.idpk=t2.idpk where t2.idpk=t1.idpk IS NULL and date_format(t1.hora1,'%H')=date_format(t2.he,'%H');

    lo hago de esta manera porque como tengo que insertar en la tabla 2 varios registros con el mismo idpkt1 de la tabla 1, tomo tambien la hora para la  comparacion  pues si no lo hago no me devolveria todos los registros.Es decir si tuviera 3 registros en la tabla 1 con el mismo id  y en la tabla 2 deberia existir tambien 3 pero a la hora de correr la consulta no me muestra nada y en la tabla1 si hay registros y en la tabla2 ninguno.

    Estoy Trabajando con Visual Basic 2010 y Mysql 5.0

    Ojala alguien pueda orientarme decirme mi lo puedo hacer de otra manera

    Gracias

    • Cambiado Enrique M. Montejo jueves, 11 de febrero de 2016 7:07 Pregunta relacionada con el acceso a datos con MySql.
    miércoles, 10 de febrero de 2016 0:24

Todas las respuestas

  • Hola, creo que deberías usar Subquerys para tal función. Estos subquerys lo que quieren decir es que podrías estar ejecutando una consulta principal y utilizarla como una tabla temporal y complementarla con otra consulta pero ya dentro del mismo query PRINCIPAL.

    EJEMPLO:

    SELECT 
    mov.campo1,
    mov.campo2,
    (SELECT tabla1.campo1 FROM tabla1 WHERE tabla1.id = mov.campo1 LIMIT1) AS diferente,
    (SELECT tabla3.campo1 FROM tabla3 WHERE tabla3.id = mov.campo1 LIMIT1) AS diferente2

    FROM
    (SELECT tabla2.campo1,tabla2.campo2 FROM tabla2 WHERE (CONDICIONES TABLA2) ORDER BY tabla2.campo1) mov

    Espero te sirva para lo que estas necesitando. Esta es una estructura básica, creo que es mucho mejor que usar el left join que a veces es menos efectivo, claro que todo depende de donde lo uses.

    Las condicionales las cambias de acuerdo a lo que necesites.

    Saludos.


    Jairo Garzón Forero - MSDN.COM/ES-CO

    lunes, 4 de abril de 2016 3:12