IN con clave mútiple

03/02/2005 - 13:59 por rt0029py | Informe spam
Cómo se hace en TSQL una Select con un IN sobre múltiples campos?

SELECT * FROM FACTURAS1
WHERE (ID, NIF, NUM_FACTURA ) IN (
SELECT ID, NIF, NUM_FACTURA FROM FACTURAS2)

quiero esos campos porque son la clave de las tablas.
Muchas gracias

Preguntas similare

Leer las respuestas

#1 Tinoco
03/02/2005 - 14:15 | Informe spam
Hola,

Utiliza la instruccion EXISTS, algo asi:

SELECT *
FROM FACTURAS1 f1
WHERE exists
(Select 1
From FACTURAS2 f2
Where f1ID. = f2.ID
and f1.NIF = f2.NIF
and f1.NUM_FACTURA = f2.NUM_FACTURA)

Espero haber ayudado.

Hermilson Tinoco.
MCDBA, MCSD
Colombia

"rt0029py" wrote:

Cómo se hace en TSQL una Select con un IN sobre múltiples campos?

SELECT * FROM FACTURAS1
WHERE (ID, NIF, NUM_FACTURA ) IN (
SELECT ID, NIF, NUM_FACTURA FROM FACTURAS2)

quiero esos campos porque son la clave de las tablas.
Muchas gracias



Respuesta Responder a este mensaje
#2 Alejandro Mesa
03/02/2005 - 14:57 | Informe spam
Tambien puedes usar un INNER JOIN:

select a.*
from FACTURAS1 as a
inner join
FACTURAS2 as b
on a.ID = b.ID and a.NIF = b.NIF and a.NUM_FACTURA = b.NUM_FACTURA



AMB

"rt0029py" wrote:

Cómo se hace en TSQL una Select con un IN sobre múltiples campos?

SELECT * FROM FACTURAS1
WHERE (ID, NIF, NUM_FACTURA ) IN (
SELECT ID, NIF, NUM_FACTURA FROM FACTURAS2)

quiero esos campos porque son la clave de las tablas.
Muchas gracias



Respuesta Responder a este mensaje
#3 rt0029py
03/02/2005 - 15:39 | Informe spam
Perdón no se trataba de seleccionar sino de borrar... quiero hacer lo
siguiente:

DELETE FROM FACTURAS1
WHERE (ID, NIF, NUM_FACTURA ) IN (
SELECT ID, NIF, NUM_FACTURA FROM FACTURAS2)



"rt0029py" escribió en el mensaje
news:O$
Cómo se hace en TSQL una Select con un IN sobre múltiples campos?

SELECT * FROM FACTURAS1
WHERE (ID, NIF, NUM_FACTURA ) IN (
SELECT ID, NIF, NUM_FACTURA FROM FACTURAS2)

quiero esos campos porque son la clave de las tablas.
Muchas gracias


Respuesta Responder a este mensaje
#4 Alejandro Mesa
03/02/2005 - 16:05 | Informe spam
Trata,

delete a
from FACTURAS1 as a
inner join
FACTURAS2 as b
on a.ID = b.ID and a.NIF = b.NIF and a.NUM_FACTURA = b.NUM_FACTURA


AMB

"rt0029py" wrote:

Perdón no se trataba de seleccionar sino de borrar... quiero hacer lo
siguiente:

DELETE FROM FACTURAS1
WHERE (ID, NIF, NUM_FACTURA ) IN (
SELECT ID, NIF, NUM_FACTURA FROM FACTURAS2)



"rt0029py" escribió en el mensaje
news:O$
> Cómo se hace en TSQL una Select con un IN sobre múltiples campos?
>
> SELECT * FROM FACTURAS1
> WHERE (ID, NIF, NUM_FACTURA ) IN (
> SELECT ID, NIF, NUM_FACTURA FROM FACTURAS2)
>
> quiero esos campos porque son la clave de las tablas.
> Muchas gracias
>
>



Respuesta Responder a este mensaje
#5 Gustavo Larriera [MVP]
03/02/2005 - 16:43 | Informe spam
La subconsulta de IN debe proyectar solamente una columna, por lo que no
sirve para lo que deseas hacer. Puedes armar una proyección de una sola
columna aunque es una forma algo artificial de hacerlo, por ejemplo
suongamos que es posible concatenar col1 y col2, entonces:

SELECT * FROM tabla1
WHERE col1+col2 IN (SELECT col1+col2 FROM tabla2)

Puedes usar la cláusula EXISTS con una subconsulta que tenga los
WHERE-AND apropiados para tu comparación.

SELECT * FROM FACTURAS1
WHERE
EXISTS (
SELECT ID, NIF, NUM_FACTURA FROM FACTURAS2 WHERE ID=... AND NIF=...
Etc
)

Gustavo Larriera, MVP
Uruguay LatAm
http://sqljunkies.com/weblog/gux/
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho / This posting is provided "AS IS" with no warranties, and
confers no rights.



"rt0029py" wrote in message
news::
Cómo se hace en TSQL una Select con un IN sobre múltiples campos?

SELECT * FROM FACTURAS1
WHERE (ID, NIF, NUM_FACTURA ) IN (
SELECT ID, NIF, NUM_FACTURA FROM FACTURAS2)

quiero esos campos porque son la clave de las tablas.
Muchas gracias
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida