Copiar un registro
#1
Posted 10 September 2009 - 12:35 PM
Claro con la llave diferente
Saludox !
#2
Posted 10 September 2009 - 01:20 PM
Hola chicos, pues eso, puedo copiar la info de un registro a otro en la misma tabla de manera directa ? Usando Firebird...
Claro con la llave diferente
Saludox !
INSERT INTO TABLA (campo1, campo2, campo3) VALUES (SELECT Campo1, Campo2, Campo3 FROM TABLA WHERE id = :id)
#3
Posted 10 September 2009 - 01:27 PM
Hola chicos, pues eso, puedo copiar la info de un registro a otro en la misma tabla de manera directa ? Usando Firebird...
Claro con la llave diferente
Saludox !
sql
INSERT INTO TABLA (campo1, campo2, campo3) VALUES (SELECT Campo1, Campo2, Campo3 FROM TABLA WHERE id = :id)
Gracias eduarcol, pero siendo copia en la misma tabla, me manda un error en el ID porque quiere guardarse con el mismo, cómo puedo decirle que ese campo se guarde con un otro valor que no sea el copiado ?
Saludox !
#4
Posted 10 September 2009 - 01:32 PM
INSERT INTO TABLA (ID, campo1, campo2, campo3) VALUES ('Valor Clave', SELECT Campo1, Campo2, Campo3 FROM TABLA WHERE id = :id)
#5
Posted 10 September 2009 - 01:35 PM
Lo he intentado asi:
INSERT INTO SAAIO_AVITRAS (CVE_IMPOO, FOL_AVIS, FEC_AVIS, TIP_OPER) VALUES ('HOLA','ADIOS',SELECT FEC_AVIS, TIP_OPER FROM SAAIO_AVITRAS WHERE CVE_IMPOO = '000/01' AND FOL_AVIS = '80000001')
Pero me manda un error que dice: Token Unknown SELECT
#6
Posted 10 September 2009 - 01:37 PM
INSERT INTO SAAIO_AVITRAS (CVE_IMPOO, FOL_AVIS, FEC_AVIS, TIP_OPER) VALUES ('HOLA','ADIOS', (SELECT FEC_AVIS, TIP_OPER FROM SAAIO_AVITRAS WHERE CVE_IMPOO = '000/01' AND FOL_AVIS = '80000001') )
Salud OS
#7
Posted 10 September 2009 - 01:39 PM
Hola amiguita, te falto unos parentesis
sql
INSERT INTO SAAIO_AVITRAS (CVE_IMPOO, FOL_AVIS, FEC_AVIS, TIP_OPER) VALUES ('HOLA','ADIOS', (SELECT FEC_AVIS, TIP_OPER FROM SAAIO_AVITRAS WHERE CVE_IMPOO = '000/01' AND FOL_AVIS = '80000001') )
Salud OS
Nop !... ahora me marca que la coma (,) es el Token Unknown...
Se está rebelando esta consulta
#8
Posted 10 September 2009 - 01:43 PM
#9
Posted 10 September 2009 - 01:44 PM
tienes razon, me funciona es haciendo un select por cada campo, pero es mucho proceso para la BD dejame investigar a ver que consigo
Gracias amigo, ...
Me temo que por lo pronto lo haré a patín (n), jejeje
Saludox !
#10
Posted 10 September 2009 - 01:45 PM
INSERT INTO SAAIO_AVITRAS (CVE_IMPOO, FOL_AVIS, FEC_AVIS, TIP_OPER) VALUES ('HOLA','ADIOS', (SELECT FEC_AVIS FROM SAAIO_AVITRAS WHERE CVE_IMPOO = '000/01' AND FOL_AVIS = '80000001'), (SELECT TIP_OPER FROM SAAIO_AVITRAS WHERE CVE_IMPOO = '000/01' AND FOL_AVIS = '80000001') )
Salud OS
#11
Posted 10 September 2009 - 01:47 PM
tienes razon, me funciona es haciendo un select por cada campo, pero es mucho proceso para la BD dejame investigar a ver que consigo
¿será.........?
Salud OS
#12
Posted 10 September 2009 - 01:48 PM
Pues entonces hagamos una chapuza
sql
INSERT INTO SAAIO_AVITRAS (CVE_IMPOO, FOL_AVIS, FEC_AVIS, TIP_OPER) VALUES ('HOLA','ADIOS', (SELECT FEC_AVIS FROM SAAIO_AVITRAS WHERE CVE_IMPOO = '000/01' AND FOL_AVIS = '80000001'), (SELECT TIP_OPER FROM SAAIO_AVITRAS WHERE CVE_IMPOO = '000/01' AND FOL_AVIS = '80000001') )
Salud OS
No amiguito, ahora me manda errores de Key Violation ! y el registro aun no existe
Edito, parece que ha funcionado
#13
Posted 10 September 2009 - 01:51 PM
INSERT INTO SAAIO_AVITRAS (CVE_IMPOO, FOL_AVIS, FEC_AVIS, TIP_OPER) VALUES ((SELECT 'HOLA','ADIOS', FEC_AVIS, TIP_OPER FROM SAAIO_AVITRAS WHERE CVE_IMPOO = '000/01' AND FOL_AVIS = '80000001') )
Una ejecucion menos del select
#14
Posted 10 September 2009 - 01:55 PM
Prefiero esta chapuza :D
sql
INSERT INTO SAAIO_AVITRAS (CVE_IMPOO, FOL_AVIS, FEC_AVIS, TIP_OPER) VALUES ((SELECT 'HOLA','ADIOS', FEC_AVIS, TIP_OPER FROM SAAIO_AVITRAS WHERE CVE_IMPOO = '000/01' AND FOL_AVIS = '80000001') )
Una ejecucion menos del select
Me manda un error en la coma de después del 'HOLA'
#15
Posted 10 September 2009 - 02:02 PM
Prefiero esta chapuza :D
sql
INSERT INTO SAAIO_AVITRAS (CVE_IMPOO, FOL_AVIS, FEC_AVIS, TIP_OPER) VALUES ((SELECT 'HOLA','ADIOS', FEC_AVIS, TIP_OPER FROM SAAIO_AVITRAS WHERE CVE_IMPOO = '000/01' AND FOL_AVIS = '80000001') )
Una ejecucion menos del select
Me manda un error en la coma de después del 'HOLA'
prueba colocando 'HOLA' as CampoClave
#16
Posted 10 September 2009 - 02:14 PM
INSERT INTO SAAIO_AVITRAS (CVE_IMPOO, FOL_AVIS, FEC_AVIS, TIP_OPER) SELECT 'HOLA','ADIOS', FEC_AVIS, TIP_OPER FROM SAAIO_AVITRAS WHERE CVE_IMPOO = '000/01' AND FOL_AVIS = '80000001'
#17
Posted 10 September 2009 - 02:45 PM
INSERT INTO tabla1 (NOMBRE, FECHA, CANTIDAD, MONEDA, FECHA1, INTPEQUE, HORA) SELECT NOMBRE, FECHA, CANTIDAD, MONEDA, FECHA1, INTPEQUE, HORA FROM TABLA1 WHERE NOMBRE = 'a'
Y no me funciona (tengo Firebird 1.5.3).
El error que me sale es este:
Invalid insert or update value(s): object columns are constrained - no 2 table rows can have duplicate column values. violation of PRIMARY or UNIQUE KEY constraint "PK_TABLA1" on table "TABLA1".
Probé distintas variaciones de ésta, con y sin la clave... pero nada. ¿Tal estoy de la cabeza?
¿Donde ando metiendo mal el dedo? 8-)
Saludos,
#18
Posted 10 September 2009 - 02:58 PM
Yo intento ejecutar una consulta como esta:
sql
INSERT INTO tabla1 (NOMBRE, FECHA, CANTIDAD, MONEDA, FECHA1, INTPEQUE, HORA) SELECT NOMBRE, FECHA, CANTIDAD, MONEDA, FECHA1, INTPEQUE, HORA FROM TABLA1 WHERE NOMBRE = 'a'
Y no me funciona (tengo Firebird 1.5.3).
El error que me sale es este:
delphi
Invalid insert or update value(s): object columns are constrained - no 2 table rows can have duplicate column values. violation of PRIMARY or UNIQUE KEY constraint "PK_TABLA1" on table "TABLA1".
Probé distintas variaciones de ésta, con y sin la clave... pero nada. ¿Tal estoy de la cabeza?
¿Donde ando metiendo mal el dedo? 8-)
Saludos,
Alli lo que esta pasando es que estas duplicando la clave principal, esta debe ser distinto.
#19
Posted 10 September 2009 - 03:17 PM
A eso voy.
Por ejemplo esto:
select ID, NOMBRE, FECHA, CANTIDAD, MONEDA, FECHA1, INTPEQUE, HORA
from tabla1
where NOMBRE = 'Marcelo'
Me dá un solo resultado, como es de esperar:
ID NOMBRE FECHA CANTIDAD MONEDA FECHA1 INTPEQUE HORA 951 Marcelo 10/09/2009 25 365 10/10/2009 10 05:44:38 p.m.
Digamos ahora que quiero insertarlo nuevamente, con otra clave:
INSERT INTO TABLA1 (ID, NOMBRE, FECHA, CANTIDAD, MONEDA, FECHA1, INTPEQUE, HORA) SELECT ID + 100, NOMBRE, FECHA, CANTIDAD, MONEDA, FECHA1, INTPEQUE, HORA FROM tabla1 WHERE NOMBRE = 'Marcelo'
IBExpert deja de responder ... vuelvo a abrirlo, y a revisar los valores. No se insertó.
¿Entonces?
Se que no estoy totalmente concentrado... no logro ver el maldito error. Me hace falta despejarme... y cargar combustible.
En teoría según el estandar SQL, una instrucción SQL
INSERT INTO TABLA
SELECT (...)
FROM TABLA
WHERE ....
Debería funcionar. Algo mal debo estar haciendo y no lo veo . No he probado con la variante "Values ()". Tal vez por allí venga la mano.
Saludos,
#20
Posted 10 September 2009 - 03:34 PM
Qry_Copia.SQL.Text := 'INSERT INTO SAAIO_AVITRAS '+ 'SELECT '+quotedstr(Clave)+','+quotedstr(Folio)+ ',FEC_AVIS,TIP_OPER, TIP_TRAS, TIP_PROGO, NUM_PROGO, CVE_PLANO'+ ',CVE_IMPOD,TIP_PROGD, NUM_PROGD,CVE_PLAND, CVE_REPR, FIR_ELEC'+ ',NUM_FEA,NUM_REFE FROM SAAIO_AVITRAS WHERE CVE_IMPOO = '+ quotedstr(Clave)+' AND FOL_AVIS = '+quotedstr(edr_reforig.Text);
Chicos, aquí les dejo la consulta tal como quedó al final y funciona de perlas...
Gracias a todos por su ayuda
Beshito para mi amor (k) (l), saludos para todos los demás !