OT: Problemas con Consulta SQL

24/12/2003 - 13:41 por Matias Iacono | Informe spam
Hola... se que es un OT... pero por ahi alguien sabe...

Tengo dos tablas, una que contiene una lista de datos, pero dos campos
conforman la llave primaria.

Y por otro lado tengo una tabla de relacion, en la cual se le paso la llave
de una tabla X, y las otras dos de la tabla ya mensionada...

Mi problema es simple... quiero saber, de la primera tabla, todos los
registros que no esten en la tabla relacion.

Si fuera una sola llave primaria por cada lado la consulta seria simple

select * from Tabla1 where CampoID not in (select campoid from relacion)

Pero no consigo hacerlo con dos llaves...

Alguna sugerencia???

Gracias

Preguntas similare

Leer las respuestas

#1 Jhonny Vargas P. [MVP]
24/12/2003 - 13:50 | Informe spam
Si es SQL Server puedes utilizar un NOT IN a la otra tabla dime y te
mando un ejemplo... En Access no tengo la menor idea.


Saludos,
Jhonny Vargas P. [MS MVP]
Santiago de Chile


"Matias Iacono" wrote in message
news:
Hola... se que es un OT... pero por ahi alguien sabe...

Tengo dos tablas, una que contiene una lista de datos, pero dos campos
conforman la llave primaria.

Y por otro lado tengo una tabla de relacion, en la cual se le paso la


llave
de una tabla X, y las otras dos de la tabla ya mensionada...

Mi problema es simple... quiero saber, de la primera tabla, todos los
registros que no esten en la tabla relacion.

Si fuera una sola llave primaria por cada lado la consulta seria simple

select * from Tabla1 where CampoID not in (select campoid from relacion)

Pero no consigo hacerlo con dos llaves...

Alguna sugerencia???

Gracias


Respuesta Responder a este mensaje
#2 Matias Iacono
24/12/2003 - 14:00 | Informe spam
Si.. es SQL pero igual no me funciona... ya que le hice not in a los dos
campos... pero aunque tengo un valor que no esta en la tabla relacion, no me
lo muestra...

Pero mandamelo.. por ahi algo he hecho mal... no soy muy bueno para los SQLs

"Jhonny Vargas P. [MVP]" escribió en el
mensaje news:
Si es SQL Server puedes utilizar un NOT IN a la otra tabla dime y te
mando un ejemplo... En Access no tengo la menor idea.


Saludos,
Jhonny Vargas P. [MS MVP]
Santiago de Chile


"Matias Iacono" wrote in message
news:
> Hola... se que es un OT... pero por ahi alguien sabe...
>
> Tengo dos tablas, una que contiene una lista de datos, pero dos campos
> conforman la llave primaria.
>
> Y por otro lado tengo una tabla de relacion, en la cual se le paso la
llave
> de una tabla X, y las otras dos de la tabla ya mensionada...
>
> Mi problema es simple... quiero saber, de la primera tabla, todos los
> registros que no esten en la tabla relacion.
>
> Si fuera una sola llave primaria por cada lado la consulta seria simple
>
> select * from Tabla1 where CampoID not in (select campoid from relacion)
>
> Pero no consigo hacerlo con dos llaves...
>
> Alguna sugerencia???
>
> Gracias
>
>


Respuesta Responder a este mensaje
#3 Jhonny Vargas P. [MVP]
24/12/2003 - 14:56 | Informe spam
Aqui va... te mando los ejemplos completos, espero que te sirva, sino me
avisas y lo vemos el viernes...


/*Crear Tablas de Ejemplo */
Create Table Productos (
Codigo int,
Nombre varchar(30)
)

Create Table Detalles (
Id_Detalle int identity(1,1),
Codigo_Producto int,
Cantidad int
)
/*FIN Crear Tablas de Ejemplo */

/* Datos de Ejemplo */
Insert into Productos values (1001, 'Naranja')
Insert into Productos values (1002, 'Pera')
Insert into Productos values (1003, 'Manzana')
Insert into Productos values (1004, 'Limon')
Insert into Productos values (1005, 'Ciruela')
Insert into Productos values (1006, 'Kiwi')
Insert into Productos values (1007, 'Sandía')
Insert into Productos values (1008, 'Melón')


Insert into Detalles(Codigo_Producto, Cantidad) values (1001, 10)
Insert into Detalles(Codigo_Producto, Cantidad) values (1001, 15)
Insert into Detalles(Codigo_Producto, Cantidad) values (1001, 13)
Insert into Detalles(Codigo_Producto, Cantidad) values (1004, 9)
Insert into Detalles(Codigo_Producto, Cantidad) values (1004, 3)
Insert into Detalles(Codigo_Producto, Cantidad) values (1004, 15)
Insert into Detalles(Codigo_Producto, Cantidad) values (1007, 11)
Insert into Detalles(Codigo_Producto, Cantidad) values (1007, 2)
/* FIN Datos de Ejemplo */


/* Para ver Los que están en Detalles */
Select * From Productos where Codigo In (Select Codigo_Producto From
Detalles Where Codigo = Codigo_Producto)

/* Para ver Los que NO están en Detalles */
Select * From Productos where Codigo Not In (Select Codigo_Producto From
Detalles Where Codigo = Codigo_Producto)


/*Borrar Tablas de Ejemplo */
Drop Table Productos
Drop Table Detalles
/*FIN Borrar Tablas de Ejemplo */



Saludos,
Jhonny Vargas P. [MS MVP]
Santiago de Chile



"Matias Iacono" wrote in message
news:
Si.. es SQL pero igual no me funciona... ya que le hice not in a los dos
campos... pero aunque tengo un valor que no esta en la tabla relacion, no


me
lo muestra...

Pero mandamelo.. por ahi algo he hecho mal... no soy muy bueno para los


SQLs

"Jhonny Vargas P. [MVP]" escribió en el
mensaje news:
> Si es SQL Server puedes utilizar un NOT IN a la otra tabla dime y te
> mando un ejemplo... En Access no tengo la menor idea.
>
>
> Saludos,
> Jhonny Vargas P. [MS MVP]
> Santiago de Chile
>
>
> "Matias Iacono" wrote in message
> news:
> > Hola... se que es un OT... pero por ahi alguien sabe...
> >
> > Tengo dos tablas, una que contiene una lista de datos, pero dos campos
> > conforman la llave primaria.
> >
> > Y por otro lado tengo una tabla de relacion, en la cual se le paso la
> llave
> > de una tabla X, y las otras dos de la tabla ya mensionada...
> >
> > Mi problema es simple... quiero saber, de la primera tabla, todos los
> > registros que no esten en la tabla relacion.
> >
> > Si fuera una sola llave primaria por cada lado la consulta seria


simple
> >
> > select * from Tabla1 where CampoID not in (select campoid from


relacion)
> >
> > Pero no consigo hacerlo con dos llaves...
> >
> > Alguna sugerencia???
> >
> > Gracias
> >
> >
>
>


Respuesta Responder a este mensaje
#4 Sashka
24/12/2003 - 16:10 | Informe spam
Suponiendo que las tablas se llaman lista y relacion y que los campos
claves se llaman cmp1 y cmp2

SELECT Lista.cmp1, Lista.cmp2
FROM Lista LEFT JOIN
relacion ON (Lista.cmp2 = relacion.cmp2) AND
(Lista.cmp1 = relacion.cmp1)
WHERE (((relacion.cmp1) IS NULL) AND ((relacion.cmp2) IS NULL));

Sashka

"Matias Iacono" escribió en el mensaje
news:
Hola... se que es un OT... pero por ahi alguien sabe...

Tengo dos tablas, una que contiene una lista de datos, pero dos campos
conforman la llave primaria.

Y por otro lado tengo una tabla de relacion, en la cual se le paso la


llave
de una tabla X, y las otras dos de la tabla ya mensionada...

Mi problema es simple... quiero saber, de la primera tabla, todos los
registros que no esten en la tabla relacion.

Si fuera una sola llave primaria por cada lado la consulta seria simple

select * from Tabla1 where CampoID not in (select campoid from relacion)

Pero no consigo hacerlo con dos llaves...

Alguna sugerencia???

Gracias


Respuesta Responder a este mensaje
#5 Matias Iacono
24/12/2003 - 16:25 | Informe spam
Sos un maestro...

Gracias!!! :D

"Sashka" escribió en el mensaje
news:
Suponiendo que las tablas se llaman lista y relacion y que los campos
claves se llaman cmp1 y cmp2

SELECT Lista.cmp1, Lista.cmp2
FROM Lista LEFT JOIN
relacion ON (Lista.cmp2 = relacion.cmp2) AND
(Lista.cmp1 = relacion.cmp1)
WHERE (((relacion.cmp1) IS NULL) AND ((relacion.cmp2) IS NULL));

Sashka

"Matias Iacono" escribió en el mensaje
news:
> Hola... se que es un OT... pero por ahi alguien sabe...
>
> Tengo dos tablas, una que contiene una lista de datos, pero dos campos
> conforman la llave primaria.
>
> Y por otro lado tengo una tabla de relacion, en la cual se le paso la
llave
> de una tabla X, y las otras dos de la tabla ya mensionada...
>
> Mi problema es simple... quiero saber, de la primera tabla, todos los
> registros que no esten en la tabla relacion.
>
> Si fuera una sola llave primaria por cada lado la consulta seria simple
>
> select * from Tabla1 where CampoID not in (select campoid from relacion)
>
> Pero no consigo hacerlo con dos llaves...
>
> Alguna sugerencia???
>
> Gracias
>
>


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