Select entre parentesis

10/02/2008 - 20:37 por csharp1 | Informe spam
Que tal amigos,
tengo una situacion y es la siguiente,
hay una tabla llamada TABLAX que contiene 50 registros pero al hacer un
select entre parentesis no arroja resultados y no se porque. El select es
asi:
select * from tablax --> asi arroja 50 registros
(select * from tablax) > asi no arroja registros

y me esta afectando con uso ese select como una subconsulta asi:

select 1 from TABLAZETA
where CampoZeta not in (select CampoX
from TABLAX
where CONDICIONES)

y como veran, necesito colocar los parentisis y no se como hacer entonces =(
 

Leer las respuestas

#1 Alejandro Mesa
10/02/2008 - 21:59 | Informe spam
csharp1,

Yo no puedo reproducir el problema. Uso SQL Server 2005 sp2 y una senetncia
select entre parentesis si me devuelve resultado.

De todas maneras te aconsejo usar el operador NOT EXISTS y no el que estas
usando.

select 1
from TABLAZETA as a
where not exists (
select *
from TABLAX as b
where b.CampoX = a.CampoZeta
)
GO

Por que la recomendación?

Pues si existe un valor en cualquiera de los lados de la expresion que usa
NOT IN, entonces la el resultado seria NULL, puesto que la comparacion de
null con otros valores debe hacerse mediante el uso de IS [NOT] NULL.

Ejemplos:

SELECT 1
WHERE NULL NOT IN (1, 2)
GO

La expresion anterior seria algo asi como NOT (NULL = 1 OR NULL = 2). Las
dos expresiones separadas por el OR dan como resultado NULL y negar NULL es
NULL. Tambien puede analizarse como:

NULL != 1 AND NULL != 2

SELECT 1
WHERE 1 NOT IN (2, NULL)
GO

SELECT 1
WHERE 1 NOT IN (1, NULL)
GO

Esta sentencia anterior confunde aun mas, pero tambien tiene logica.

(1 != 1 AND 1 != NULL)


AMB

"csharp1" wrote

Que tal amigos,
tengo una situacion y es la siguiente,
hay una tabla llamada TABLAX que contiene 50 registros pero al hacer un
select entre parentesis no arroja resultados y no se porque. El select es
asi:
select * from tablax --> asi arroja 50 registros
(select * from tablax) > asi no arroja registros

y me esta afectando con uso ese select como una subconsulta asi:

select 1 from TABLAZETA
where CampoZeta not in (select CampoX
from TABLAX
where CONDICIONES)

y como veran, necesito colocar los parentisis y no se como hacer entonces =(



Preguntas similares