Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Resta de Tablas con SQL (https://www.clubdelphi.com/foros/showthread.php?t=5518)

agova 24-11-2003 20:18:49

Resta de Tablas con SQL
 
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 20:25:42

Hola.

Perdona, pero ¿ que es una resta de tablas ?

Saludos.

agova 24-11-2003 20: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 20: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

Código:

select * from T1
where id not in
(select id from T2)

// Saludos

agova 24-11-2003 20: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 21:01:35

Cita:

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 21: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 21:17:06

Hola.

Creo que para estos casos está el operador EXISTS pero nunca lo he utilizado.

Saludos.

agova 24-11-2003 21: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


La franja horaria es GMT +2. Ahora son las 08:49:17.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi