Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-11-2003
agova agova is offline
Miembro
 
Registrado: may 2003
Posts: 69
Poder: 21
agova Va por buen camino
Talking 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.

Última edición por agova fecha: 24-11-2003 a las 20:26:00.
Responder Con Cita
  #2  
Antiguo 24-11-2003
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 23
guillotmarc Va por buen camino
Hola.

Perdona, pero ¿ que es una resta de tablas ?

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #3  
Antiguo 24-11-2003
agova agova is offline
Miembro
 
Registrado: may 2003
Posts: 69
Poder: 21
agova Va por buen camino
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)
Responder Con Cita
  #4  
Antiguo 24-11-2003
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita
  #5  
Antiguo 24-11-2003
agova agova is offline
Miembro
 
Registrado: may 2003
Posts: 69
Poder: 21
agova Va por buen camino
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.
Responder Con Cita
  #6  
Antiguo 24-11-2003
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita
  #7  
Antiguo 24-11-2003
agova agova is offline
Miembro
 
Registrado: may 2003
Posts: 69
Poder: 21
agova Va por buen camino
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
Responder Con Cita
  #8  
Antiguo 24-11-2003
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 23
guillotmarc Va por buen camino
Hola.

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

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #9  
Antiguo 24-11-2003
agova agova is offline
Miembro
 
Registrado: may 2003
Posts: 69
Poder: 21
agova Va por buen camino
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

Última edición por agova fecha: 24-11-2003 a las 21:27:01.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 12:51: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
Copyright 1996-2007 Club Delphi