Ver la Versión Completa : Resta de Tablas con SQL
agova
24-11-2003, 21:18:49
Hola a todos, quisiera saber como puedo hacer una resta de tablas con SQL.
Hace mucho tiempo lo hice pero ahora no recuerdo como fué y no encuentro la aplicacion en la que lo lleve a cabo.
de antemano gracias a todos.
guillotmarc
24-11-2003, 21:25:42
Hola.
Perdona, pero ¿ que es una resta de tablas ?
Saludos.
agova
24-11-2003, 21:30:41
con resta de tablas me refiero a lo siguiente:
Tengo informacion en dos tablas que llamare T1 y T2 y quiero hacer la operacion de T1-T2, con lo cual quiero decir que me devuelva los registros de T1 sin los registros comunes que se encuentran en T2 (resta)
roman
24-11-2003, 21:36:51
Yo no sé si existe alguna operación SQL estándar para esto pero, suponiendo que las tablas tienen la misma estructura y un campo llave id podrías intentar con
select * from T1
where id not in
(select id from T2)
// Saludos
agova
24-11-2003, 21:56:15
Gracias Roman
Efectivamente es la forma como lo estaba atacando, esta es mi consulta:
SELECT ORDENP,BULTO FROM PRODUCCIONC WHERE ORDENP NOT IN(SELECT ORDENP,BULTO FROM ORDENP)
pero al abrirla me da el siguiente error:
Subselect has too many fields
por eso me decidi a exponerla en este foro.
roman
24-11-2003, 22:01:35
agova comentó:
SELECT ORDENP,BULTO FROM PRODUCCIONC WHERE ORDENP NOT IN(SELECT ORDENP,BULTO FROM ORDENP)
pero al abrirla me da el siguiente error:
Subselect has too many fields
Hasta donde entiendo, las subconsultas no pueden regresar más de una columna de manera que, si ordenp es el campo llave entonces quita bulto de la subconsulta.
Y no sé si es error de "dedo" pero en la subconsulta después de FROM debe ir el nombre de la segunda tabla y no del campo.
// Saludos
agova
24-11-2003, 22:12:23
La tabla OrdenP tiene como super llave los campos OrdenP y Bulto
y la tabla ProduccionC tiene como super llave los Campos OrdenP, Bulto, y Operacion
guillotmarc
24-11-2003, 22:17:06
Hola.
Creo que para estos casos está el operador EXISTS pero nunca lo he utilizado.
Saludos.
agova
24-11-2003, 22:20:25
Algo importante es que necesito verificar que ambos campos de OrdenP sean verifcados a la vez ya que estos forman una super llave.
Por tanto creo que hacer la cosnulta de este modo no es lo correcto:
SELECT ORDENP,BULTO FROM PRODUCCIONC WHERE ORDENP NOT IN(SELECT ORDENP FROM ORDENP WHERE ULTIMA=38) AND BULTO NOT IN(SELECT BULTO FROM ORDENP WHERE ULTIMA=38)
ya que verifica aisladamente primero la OrdenP y despues el Bulto
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.