SQL - consulta para obtener los registros contrarios

   
Vista:

consulta para obtener los registros contrarios

Publicado por Julian (2 intervenciones) el 22/10/2014 12:00:30
Hola, teniendo dos tablas; t1 (id) y t2(campo1 PK, id_t1 FK), quiero obtener los id de t1 que no esta asociados a un registro de campo1.
Si tengo estos registros introducidos;

____
id |
____
1 |
2 |
3 |
____


| campo1 | id_t1 |
________________
| a | ______| 1 |
| b | ______| 2 |



Quisiera una consulta que devuelva los ID de T1 que no están asociados a CAMPO1="a" , estos serían ID=2 , ID=3.

Si ejecuto;

select id from t1 inner join t2 on t1.id=t2.id_t1 and not (campo1="a")

me devuelve sólo ID = 2, lo mismo ocurre si ejecuto;

select id from t1 inner join t2 on t1.id=t2.id_t1 and not (id = (select id from t1 inner join t2 on t1.id=t2.id_t1 and campo1="a" ).)

¿Cómo consigo que devuelva todos los no asociados de la tabla t1?
Ni siquiera se si es sencillo o complejo pero gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

consulta para obtener los registros contrarios

Publicado por Alfonso (1 intervención) el 22/10/2014 12:28:32
La sentencia correcta a utilizar seria:

SELECT ID FROM T1
WHERE ID NOT IN ( SELECT DISTINCT ID_T1 FROM T2 WHERE CAMPO1 = "a" )

Prueba y dime si es lo que estas buscando.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

consulta para obtener los registros contrarios

Publicado por Julian (2 intervenciones) el 22/10/2014 17:01:54
Muchas gracias, nada más ver el código ya sabía que iba a funcionar. Con las vueltas que le di y no había usado el not in.
Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias

consulta para obtener los registros contrarios

Publicado por Isaias (690 intervenciones) el 22/10/2014 23:28:34
Claro que es mucho mas eficiente el NOT EXISTS()
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar