Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Subconsultas - NULL

Estas en el tema de Subconsultas - NULL en el foro de SQL Server en Foros del Web. Estoy ejecutando un query que no trae lo que necesito: table1: id |nombre |id_x 1 |Guillermo |4 2 |Carlos |5 3 |Luis |6 table2: id_x ...
  #1 (permalink)  
Antiguo 04/04/2013, 12:37
 
Fecha de Ingreso: septiembre-2005
Mensajes: 74
Antigüedad: 19 años, 3 meses
Puntos: 0
Subconsultas - NULL

Estoy ejecutando un query que no trae lo que necesito:

table1:

id |nombre |id_x
1 |Guillermo |4
2 |Carlos |5
3 |Luis |6

table2:

id_x |telefono
4 |2541667
5 |9696969
NULL |987654321

select * from table1
where id_x not in (select id_x from
table2)

Yo quiero todos los registros que no están en la table2 mediante el campo id_x.

Debería devolver:

id |nombre |id_x
3 |Luis |6

Pero no devuelve registros, sé que el problema tiene que ver con los NULLs en la table2, entonces cómo puedo obtener lo que deseo?
  #2 (permalink)  
Antiguo 04/04/2013, 12:54
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 4 meses
Puntos: 774
Respuesta: Subconsultas - NULL

Código SQL:
Ver original
  1. CREATE TABLE #table1
  2. (
  3. id INT,
  4. nombre VARCHAR(20),
  5. id_x INT
  6. )
  7.  
  8. CREATE TABLE #table2
  9. (
  10. id_x INT,
  11. telefono VARCHAR(20)
  12. )
  13.  
  14.  
  15.  
  16. INSERT INTO #table1 VALUES (1 ,'Guillermo' ,4)
  17. INSERT INTO #table1 VALUES (2 ,'Carlos' ,5)
  18. INSERT INTO #table1 VALUES (3 ,'Luis' ,6)
  19.  
  20. INSERT INTO #table2 VALUES (4 ,'2541667')
  21. INSERT INTO #table2 VALUES (5 ,'9696969')
  22. INSERT INTO #table2 VALUES (NULL ,'987654321')
  23.  
  24. SELECT t1.* FROM #table1 AS t1
  25. LEFT JOIN #table2 AS t2 ON (t1.id_x=t2.id_x)
  26. WHERE t2.id_x IS NULL

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 04/04/2013, 18:35
Avatar de leodp77  
Fecha de Ingreso: marzo-2013
Mensajes: 39
Antigüedad: 11 años, 8 meses
Puntos: 2
Respuesta: Subconsultas - NULL

Tal cual. Tenés que hacer un join. Pegale una leída al help, left, inner y right join. Además el not in no es recomendable usarlo con un select dentro, no es performante. Tampoco lo es el right join.
__________________
"La mejor forma de obtener información correcta de los foros de internet es enviar algo incorrecto y esperar las correcciones"
-- Matthew Austern

Etiquetas: null, registro, select, subconsultas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:58.