NOT IN

09/10/2006 - 12:55 por miquel | Informe spam
hola,
tengo 2 tablas:
tabla a) strCiudad (nvarchar(50)
tabla b) strCapital (nvarchar(50)

si hago la consulta
select strCiudad from tablaA where strCiudad in (select strCapital from
tablaB)
funciona, y devuelve solo aquellas ciudades que estan en A y en B

Pero si hago
select strCiudad from tablaA where strCiudad NOT IN (select strCapital from
tablaB)
deberia devolverme aquellas ciudades que no están en B pero no me devuelve
ningun registro (y los hay!!!)

Hago algo mal?
uso SQL2000 con SP3

Muchas gracias.

Preguntas similare

Leer las respuestas

#1 Salvador Ramos
09/10/2006 - 13:35 | Informe spam
Hola,

Podrías postear el DDL de esas tablas ?

Un saludo
Salvador Ramos
Murcia - España

[Microsoft MVP SQL Server]
www.helpdna.net (información sobre SQL Server y .NET)


"miquel" escribió en el mensaje
news:
hola,
tengo 2 tablas:
tabla a) strCiudad (nvarchar(50)
tabla b) strCapital (nvarchar(50)

si hago la consulta
select strCiudad from tablaA where strCiudad in (select strCapital from
tablaB)
funciona, y devuelve solo aquellas ciudades que estan en A y en B

Pero si hago
select strCiudad from tablaA where strCiudad NOT IN (select strCapital
from tablaB)
deberia devolverme aquellas ciudades que no están en B pero no me devuelve
ningun registro (y los hay!!!)

Hago algo mal?
uso SQL2000 con SP3

Muchas gracias.



Respuesta Responder a este mensaje
#2 Minothauro
09/10/2006 - 14:54 | Informe spam
Mmmmh Probe y a mi me funciona de lo mejor, pasame mas datos si
tenes para ver cual puede ser el problema.



miquel wrote:
hola,
tengo 2 tablas:
tabla a) strCiudad (nvarchar(50)
tabla b) strCapital (nvarchar(50)

si hago la consulta
select strCiudad from tablaA where strCiudad in (select strCapital from
tablaB)
funciona, y devuelve solo aquellas ciudades que estan en A y en B

Pero si hago
select strCiudad from tablaA where strCiudad NOT IN (select strCapital from
tablaB)
deberia devolverme aquellas ciudades que no están en B pero no me devuelve
ningun registro (y los hay!!!)

Hago algo mal?
uso SQL2000 con SP3

Muchas gracias.
Respuesta Responder a este mensaje
#3 miquel
09/10/2006 - 16:03 | Informe spam
hola,
las tablas son
CREATE TABLE [dbo].[tblHospitals] (
[lngCodi] [int] NOT NULL ,
[strNom] [nvarchar] (100) COLLATE Modern_Spanish_CI_AI NULL ,
[strAdreca] [nvarchar] (150) COLLATE Modern_Spanish_CI_AI NULL ,
[strCP] [nvarchar] (50) COLLATE Modern_Spanish_CI_AI NULL ,
[strCiutat] [nvarchar] (100) COLLATE Modern_Spanish_CI_AI NULL ,
[lngCodiProvincia] [int] NULL ,
[memNotes] [ntext] COLLATE Modern_Spanish_CI_AI NULL ,
[intLlits] [int] NULL ,
[dtmDHCreacio] [datetime] NULL ,
[strUsuariCreacio] [nvarchar] (20) COLLATE Modern_Spanish_CI_AI NULL ,
[dtmDHUM] [datetime] NULL ,
[strUsuariUM] [nvarchar] (20) COLLATE Modern_Spanish_CI_AI NULL ,
[strTelefon] [nvarchar] (20) COLLATE Modern_Spanish_CI_AI NULL ,
[strTelefon2] [nvarchar] (20) COLLATE Modern_Spanish_CI_AI NULL ,
[strFax] [nvarchar] (20) COLLATE Modern_Spanish_CI_AI NULL ,
[strEmail] [nvarchar] (200) COLLATE Modern_Spanish_CI_AI NULL ,
[strPaginaWeb] [nvarchar] (200) COLLATE Modern_Spanish_CI_AI NULL ,
[intCP] [int] NULL ,
[boolRevisar] [bit] NULL ,
[intTipus] [smallint] NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO

ALTER TABLE [dbo].[tblHospitals] WITH NOCHECK ADD
CONSTRAINT [PK_tblHospitals] PRIMARY KEY CLUSTERED
(
[lngCodi]
) WITH FILLFACTOR = 50 ON [PRIMARY]
GO

ALTER TABLE [dbo].[tblHospitals] ADD
CONSTRAINT [DF_tblHospitals_boolRevisar] DEFAULT (0) FOR [boolRevisar],
CONSTRAINT [DF_tblHospitals_intTipus] DEFAULT (1) FOR [intTipus]
GO


exec sp_addextendedproperty N'MS_Description', null, N'user', N'dbo',
N'table', N'tblHospitals', N'column', N'intTipus'


GO

y la otra:
CREATE TABLE [dbo].[tlkpProvincia] (
[lngCodi] [int] NOT NULL ,
[strProvincia] [nvarchar] (50) COLLATE Modern_Spanish_CI_AI NULL ,
[strCapital] [nvarchar] (100) COLLATE Modern_Spanish_CI_AI NULL
) ON [PRIMARY]
GO

ALTER TABLE [dbo].[tlkpProvincia] WITH NOCHECK ADD
CONSTRAINT [PK_tlkpProvincia] PRIMARY KEY CLUSTERED
(
[lngCodi]
) ON [PRIMARY]
GO

y lo que quiero es obtener todos aquellos hospitales cuya ciudad (strCiutat)
no es capital de provincia (strCapital en tlkpProvincia)
para lo que hago
select * from tblHospitals where strCiutat NOT IN (select strCapital from
tlkpHospital), y no devuelve nada.

Gracias por el interés.




"Salvador Ramos" escribió en el
mensaje news:%
Hola,

Podrías postear el DDL de esas tablas ?

Un saludo
Salvador Ramos
Murcia - España

[Microsoft MVP SQL Server]
www.helpdna.net (información sobre SQL Server y .NET)


"miquel" escribió en el mensaje
news:
hola,
tengo 2 tablas:
tabla a) strCiudad (nvarchar(50)
tabla b) strCapital (nvarchar(50)

si hago la consulta
select strCiudad from tablaA where strCiudad in (select strCapital from
tablaB)
funciona, y devuelve solo aquellas ciudades que estan en A y en B

Pero si hago
select strCiudad from tablaA where strCiudad NOT IN (select strCapital
from tablaB)
deberia devolverme aquellas ciudades que no están en B pero no me
devuelve ningun registro (y los hay!!!)

Hago algo mal?
uso SQL2000 con SP3

Muchas gracias.







Respuesta Responder a este mensaje
#4 miquel
09/10/2006 - 16:09 | Informe spam
hola monithauro,

he posteado las DDL de las tablas bajo la respuesta de salvador.
Gracias.

"Minothauro" escribió en el mensaje
news:
Mmmmh Probe y a mi me funciona de lo mejor, pasame mas datos si
tenes para ver cual puede ser el problema.



miquel wrote:
hola,
tengo 2 tablas:
tabla a) strCiudad (nvarchar(50)
tabla b) strCapital (nvarchar(50)

si hago la consulta
select strCiudad from tablaA where strCiudad in (select strCapital from
tablaB)
funciona, y devuelve solo aquellas ciudades que estan en A y en B

Pero si hago
select strCiudad from tablaA where strCiudad NOT IN (select strCapital
from
tablaB)
deberia devolverme aquellas ciudades que no están en B pero no me devuelve
ningun registro (y los hay!!!)

Hago algo mal?
uso SQL2000 con SP3

Muchas gracias.
Respuesta Responder a este mensaje
#5 miquel
09/10/2006 - 17:12 | Informe spam
Hola,

No entiendo el porqué pero para que me funcione tengo que hacer
select * from tblA where strCiutat NOT IN (select strCapital from tblB where
strCapital is not null)

La verdad es que tblB contiene un registro para el que strCapital = null

Saludos

"Salvador Ramos" escribió en el
mensaje news:%
Hola,

Podrías postear el DDL de esas tablas ?

Un saludo
Salvador Ramos
Murcia - España

[Microsoft MVP SQL Server]
www.helpdna.net (información sobre SQL Server y .NET)


"miquel" escribió en el mensaje
news:
hola,
tengo 2 tablas:
tabla a) strCiudad (nvarchar(50)
tabla b) strCapital (nvarchar(50)

si hago la consulta
select strCiudad from tablaA where strCiudad in (select strCapital from
tablaB)
funciona, y devuelve solo aquellas ciudades que estan en A y en B

Pero si hago
select strCiudad from tablaA where strCiudad NOT IN (select strCapital
from tablaB)
deberia devolverme aquellas ciudades que no están en B pero no me
devuelve ningun registro (y los hay!!!)

Hago algo mal?
uso SQL2000 con SP3

Muchas gracias.







Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida