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 03-11-2011
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.462
Poder: 21
newtron Va camino a la fama
Instrucción INSERT INTO no me funciona bien

Hola a tod@s.

Tengo tres tablas:

BORRADOR1
IVAREPERCUTIDO
IVARBORRADOR1

Las tablas IVAREPERCUTIDO y IVARBORRADOR1 son exactamente iguales.

Ejemplo de registros:

Código:
BORRADOR1

Asiento Apunte Fecha      Importe REPSOP
      1      1 01/01/2011     100 00000001
      2      1 01/01/2011     150 00000002
      3      1 01/01/2011     500 00000003

IVARBORRADOR1

CODIGO   Fecha      Factura Importe
00000001 01/01/2011 1           100
00000002 01/01/2011 2           150
00000003 01/01/2011 3           500
00000004 01/01/2011 4           300

El campo REPSOP de la tabla BORRADOR1 se relaciona con el campo CODIGO de la tabla IVARBORRADOR1.

El tema está en que quiero insertar en la tabla IVAREPERCUTIDO los registros de la tabla IVARBORRADOR1 en los que el campo CODIGO no se encuentre en el campo REPSOP de la tabla BORRADOR1.

Estoy ejecutando la siguiente instrucción:

Código SQL [-]
INSERT INTO IVAREPERCUTIDO SELECT * FROM IVARBORRADOR1 WHERE IVARBORRADOR1.CODIGO NOT IN (SELECT REPSOP FROM BORRADOR1 WHERE IVARBORRADOR1.CODIGO=BORRADOR1.REPSOP)


pero me coge todos los registros cuando solo me tendría que coger en este caso el codigo 00000004 que es el que no se encuentra en la tabla BORRADOR1.

¿Algún amable gurú del SQL me puede decir dónde estoy metiendo la pata?

Gracias y un saludo
__________________
Be water my friend.

Última edición por Casimiro Notevi fecha: 03-11-2011 a las 19:56:29.
Responder Con Cita
  #2  
Antiguo 03-11-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Lo de guru con migo no, pero creo que lo que pasa es que hacer una seleccion de todos los campos de una tabla y luego haces una seleccion de un solo campo en la segunda tabla, para insertarla en la tercera.
Tu sentencia:
Código Delphi [-]
INSERT INTO IVAREPERCUTIDO SELECT * FROM IVARBORRADOR1 WHERE IVARBORRADOR1.CODIGO NOT IN 
(SELECT REPSOP FROM BORRADOR1 WHERE IVARBORRADOR1.CODIGO=BORRADOR1.REPSOP)
Me parece:
Código Delphi [-]
INSERT INTO IVAREPERCUTIDO (SELECT * FROM IVARBORRADOR1 WHERE IVARBORRADOR1.CODIGO NOT IN 
(SELECT * FROM BORRADOR1 WHERE IVARBORRADOR1.CODIGO = BORRADOR1.REPSOP))
Saludos
PD: Creo que seria mejor hacer la comparacion primero, colocarla en una tabla temporal y luego insertarla en la que se necesite.
__________________
Siempre Novato
Responder Con Cita
  #3  
Antiguo 03-11-2011
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.462
Poder: 21
newtron Va camino a la fama
Gracias amigo Caral pero esos paréntesis no le gustan a mi base de datos, me da error. Tendré que buscar otra forma.

Gracias y un saludo
__________________
Be water my friend.
Responder Con Cita
  #4  
Antiguo 03-11-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Por curiosidad y sin los parentesis ?.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #5  
Antiguo 03-11-2011
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.462
Poder: 21
newtron Va camino a la fama
Tampoco.
__________________
Be water my friend.
Responder Con Cita
  #6  
Antiguo 03-11-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
También me he encontrado en algunas ocasiones que para ese tipo de sentencia "compuesta" me salta un mensaje de error, de que no es correcta. Ponga o quite los paréntesis, no funciona.
Sin embargo, en otras ocasiones funciona correctamente.
No he sido capaz de encontrar un "patrón" para identificar de donde proviene el problema.
Aunque tampoco lo he buscado mucho
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
funciona bien en windows 7 64b pero en XP no funciona ASAPLTDA Varios 5 06-05-2011 16:24:50
Error de sintaxis en la instrucción INSERT INTO Ledian_Fdez C++ Builder 1 14-04-2009 20:26:35
QRImage no funciona bien eljinete Impresión 4 16-12-2005 01:02:05
No me funciona la instruccion libc.system() athal Lazarus, FreePascal, Kylix, etc. 2 29-06-2004 22:07:36
Export hacia instruccion Insert buitrago Varios 5 27-11-2003 15:33:34


La franja horaria es GMT +2. Ahora son las 02:58:24.


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