SQL - ¿Resta? de dos consultas

 
Vista:

¿Resta? de dos consultas

Publicado por Jordi (2 intervenciones) el 13/05/2005 12:12:41
Buenos días,

a ver si me pueden ayudar.
Os cuento brevemente, dicho problema sería fácil si la clave principal de la tabla fuera una única columna, pero esta vez la clave principal la forman dos columnas: serie y número.

En el caso de clave principal de una columna, su estructura sería:
SELECT tabla1.campo1, tabla1.campo2, tabla1.otra_informacion, etc
FROM tabla1
WHERE condiciones_generales AND
tabla1.campo1 NOT IN (select tabla1.campo1 etc etc WHERE condiciones excluyentes, etc etc)
ORDER etc etc etc bla bla.

OK?

La pregunta: NOT IN solo puede comprobar un unico campo. ¿Cómo puedo hacer eso con dos campos principales?
Lo ideal sería hacer el opuesto del UNION ALL de dos consultas :-P

Gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:¿Resta? de dos consultas

Publicado por Isaías Islas (5072 intervenciones) el 13/05/2005 17:11:41
Tal vez podrias resolverlo mediante un RIGHT JOIN o un LEFT JOIN.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:¿Resta? de dos consultas

Publicado por trazom (8 intervenciones) el 16/05/2005 22:04:10
Quien te dijo que el NOT IN solo puede comparar 1 campo ?

SQL> select * from t;

ID NOMBRE
---------- --------------
1 Jose
1 Jose
1 Jose
3 pepe
3 pepe
2 Luis

6 rows selected

SQL> select * from testger
2 where (id, nombre) not in (select 1, 'Jose' from dual);

ID NOMBRE
---------- ----------------
3 pepe
3 pepe
2 Luis

(Tampoco se necesitarian joins para resolverlo)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:¿Resta? de dos consultas

Publicado por Isaías Islas (5072 intervenciones) el 17/05/2005 01:32:52
Hice una prueba:

CREATE TABLE #TABLA1 (ID INT , NOMBRE VARCHAR(30))
INSERT INTO #TABLA1 VALUES(1,'Jose')
INSERT INTO #TABLA1 VALUES(1,'Jose')
INSERT INTO #TABLA1 VALUES(1,'Jose')
INSERT INTO #TABLA1 VALUES(3,'pepe')
INSERT INTO #TABLA1 VALUES(3,'pepe')
INSERT INTO #TABLA1 VALUES(2,'Luis')

select * from #TABLA1 where (ID, nombre) not in (1,'jose')

Y recibo este mensaje de error:

Server: Msg 170, Level 15, State 1, Line 1
Line 1: Incorrect syntax near ','.

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar