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.461
Poder: 20
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.461
Poder: 20
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.461
Poder: 20
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.038
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
  #7  
Antiguo 03-11-2011
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.461
Poder: 20
newtron Va camino a la fama
Cita:
Empezado por Casimiro Notevi Ver Mensaje
No he sido capaz de encontrar un "patrón"...
Pues si no hay patrón, menos un marinero.
__________________
Be water my friend.
Responder Con Cita
  #8  
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.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por newtron Ver Mensaje
Pues si no hay patrón, menos un marinero.
Pensé que en estos asuntos tú eres un patrón y yo soy un marinero. Tuve una época de patrón, pero me "quemé" y volví a ser marinero.
Ahora quiero volver a ser de nuevo un patrón, aunque está bien difícil.
Responder Con Cita
  #9  
Antiguo 03-11-2011
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.461
Poder: 20
newtron Va camino a la fama
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Pensé que en estos asuntos tú eres un patrón y yo soy un marinero. Tuve una época de patrón, pero me "quemé" y volví a ser marinero.
Ahora quiero volver a ser de nuevo un patrón, aunque está bien difícil.
Si que lo soy, precisamente en enero hago 20 años de patrón, ya os invitaré a algo.

Lo que pasa es que yo creo que llegué en el momento adecuado al sitio adecuado y la verdad es que no me ha ido mal. Ahora son otros tiempos y está la cosa bastante más complicada, y más que se está poniendo.
__________________
Be water my friend.
Responder Con Cita
  #10  
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.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Hace 20 años... en el 1991, pues más o menos igual, yo "me hice patrón" en el 1988, aunque por diversos motivos no publicables en público, tuve que dejarlo varios años después.
Responder Con Cita
  #11  
Antiguo 03-11-2011
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.461
Poder: 20
newtron Va camino a la fama
Bueno, el problema de esto es que para salir a la calle tienes que llevar un muy buen producto ya terminado y empezar a hacerte un mercado, y ahora eso está complicado.

Hace 20 años cualquier programa perruno que no funcionaba lo vendías a millón y no pasaba nada. El panorama ha cambiado bastante, hay que llevar productos bien acabados, potentes, muy funcionales y encima luchar para venderlo contra otros cientos que como tú están en la calle o en internet vendiendo lo mismo.
__________________
Be water my friend.
Responder Con Cita
  #12  
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.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cierto, hoy en día la venta de un producto software es dificilísimo. Hay que recurrir a otros enfoques, como ofrecer servicios variados, principalmente.
Responder Con Cita
  #13  
Antiguo 04-11-2011
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.461
Poder: 20
newtron Va camino a la fama
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Cierto, hoy en día la venta de un producto software es dificilísimo. Hay que recurrir a otros enfoques, como ofrecer servicios variados, principalmente.
Si, yo llevo algún tiempo ofreciendo servicios sexuales pero no me sale mucha faena.

P.D. uis.... creo que nos estamos desviando "algo" del tema.
__________________
Be water my friend.
Responder Con Cita
  #14  
Antiguo 04-11-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por newtron Ver Mensaje
Si, yo llevo algún tiempo ofreciendo servicios sexuales pero no me sale mucha faena.
P.D. uis.... creo que nos estamos desviando "algo" del tema.
También puedes alquilar el "servicio" del negocio, pones un letrero: "Servicios públicos: un pis 1 euro; un pos 3 euros", lo mismo funciona
Responder Con Cita
  #15  
Antiguo 04-11-2011
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: Murcia (España)
Posts: 935
Poder: 19
ElDioni Va por buen camino
Prueba con esto.

Código SQL [-]
INSERT INTO IVAREPERCUTIDO SELECT DISTINCTROWIVARBORRADOR1.* FROM IVARBORRADOR1 LEFT JOIN BORRADOR1 ON IVARBORRADOR1.REPSOP = BORRADOR1.CODIGOWHERE (((BORRADOR1.CODIGO) Is Null));

Saludos.
Responder Con Cita
  #16  
Antiguo 04-11-2011
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.461
Poder: 20
newtron Va camino a la fama
Cita:
Empezado por ElDioni Ver Mensaje
Prueba con esto.

Código SQL [-]INSERT INTO IVAREPERCUTIDO SELECT DISTINCTROWIVARBORRADOR1.* FROM IVARBORRADOR1 LEFT JOIN BORRADOR1 ON IVARBORRADOR1.REPSOP = BORRADOR1.CODIGOWHERE (((BORRADOR1.CODIGO) Is Null));


Saludos.
Nada, me da este error:
Código SQL [-]
ElevateDB Error #700 An error was found in the statement at line 2 and column 33 (Expected FROM but instead found .)

Gracias
__________________
Be water my friend.
Responder Con Cita
  #17  
Antiguo 04-11-2011
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: Murcia (España)
Posts: 935
Poder: 19
ElDioni Va por buen camino
¿Y así?

Código SQL [-]
INSERT INTO IVAREPERCUTIDO SELECT * FROM  IVARBORRADOR1 LEFT JOIN BORRADOR1 ON IVARBORRADOR1.REPSOP =  BORRADOR1.CODIGO WHERE BORRADOR1.CODIGO Is Null;

Saludos.
Responder Con Cita
  #18  
Antiguo 04-11-2011
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.461
Poder: 20
newtron Va camino a la fama
Cita:
Empezado por ElDioni Ver Mensaje
¿Y así?

Código SQL [-]INSERT INTO IVAREPERCUTIDO SELECT * FROM IVARBORRADOR1 LEFT JOIN BORRADOR1 ON IVARBORRADOR1.REPSOP = BORRADOR1.CODIGO WHERE BORRADOR1.CODIGO Is Null;


Saludos.
Negativo, también me da error
__________________
Be water my friend.
Responder Con Cita
  #19  
Antiguo 04-11-2011
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: Murcia (España)
Posts: 935
Poder: 19
ElDioni Va por buen camino
¿Te da error si haces la consulta por separado sin el insert?

Código SQL [-]
SELECT * FROM  IVARBORRADOR1 LEFT JOIN BORRADOR1 ON IVARBORRADOR1.REPSOP =  BORRADOR1.CODIGO WHERE BORRADOR1.CODIGO Is Null

lo digo por descartar algo.

Si no te da error puedes, aunque sea guarrear un poco, meter los datos uno a uno con un while.

Saludos.
Responder Con Cita
  #20  
Antiguo 04-11-2011
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.461
Poder: 20
newtron Va camino a la fama
Bueno, con esto no da error pero me trae todos los registros. Iré pensando en hacerlo por código.

Gracias
__________________
Be water my friend.
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 01:09:31.


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