FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Sentencia UPDATE
Hola.
Necesito hacer un UPDATE a un campo de una tabla tomando como valor un campo de otra tabla. El problema con el que me encuentro es que en la tabla de la que tomo los valores se pueden dar multiples registros por cada uno de la tabla a actualizar. Algo así:
Esto me devuelve Multiple rows in sigleton select. He probado a añadir ROWS 1 en la sentencia SELECT:
Pero entonces el resultado es: Invalid token. Dynamic SQL Error. SQL error code = -104. Token unknown - line 2, char 64. ROWS. Necesito hacer esta actualización ya que le campo SENDER_POINT de la tabla a actualizar no existía en un principio, y ahora hay que actualizarlo con el dato correcto. El problema es que son demasiados registros para hacerlo manualmente. ¿Alguien me puede dar alguna idea de como escribir la sentencia para que me haga la actualización?, ¿o no se puede hacer directamente en una consulta?. Ah!, todo esto trabajando en Interbase 7.5. Muchas gracias. |
#3
|
|||
|
|||
Si no te funciona el ROWS n, prueba a usar GROUP BY y HAVING para obligar a que te devuelva una sola fila
|
#4
|
|||
|
|||
Solucionado
Hola.
Con el DISTINCT me daba el mismo problema, el de multiple... Con group by no había manera de hacerlo. Al final he tenido que hacer tres consultas en 1. De dentro hacia afuera, en la primera obtengo el MAX id de la tabla de la que saco los datos para cada registro que voy a actualizar. En la segunda saco el dato SENDER_POINT donde ID = al obtenido en la consulta anterior. Y por ultimo la tercera coonsulta hace el UPDATE en si. Algo así:
De esta manera funcionó perfectamente (eso si... tomandose su tiempo). Gracias de todas formas. |
#5
|
||||
|
||||
ammmh
asi a vista de ojos de buen cubero y malo para las bases de datos debes de tener cuidado.
no necesariamente SENDER_POINT debe ser unico para cualquier registro donde ID_GIRO sea igual a tu tabla maestra donde quieres ser el update. tu solucin al final si que es algo rara, ya que no conozco su estructura, pero cuando necesites ahcer este tipos de updates, o inserts, procura vinvular tola la llave primaria de la tabla maestra con la otra tabla de donde quieres obtener datos.
__________________
Estudia y anda en la calle.... que asi serás el doble de listo que los demás... análisis de información análisis y diseño de sistemas Paoti Rios Reséndiz |
#6
|
|||
|
|||
No problem
Hola.
El dato en SENDER_POINT es único para cada ID_GIRO, así que por ese lado no hay problema. Lo que sucede es que en la tabla 2 efectivamente se dan n registros por cada ID_GIRO. Pero ese dato siempre ha de ser el mismo. En cualquier caso se trataba de una sentencia puntual, dado que en un principio en la tabla 1 no era necesario ese dato, a partir de ahora si que lo es. Este UPDATE se ha ejecutado sólo una vez, en adelante no es necesario dado que SENDER_POINT ya recibe el valor correcto al hacer el INSERT. Saludos. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Uso de IN en una sentencia SQL | gaby_stars | SQL | 7 | 03-09-2006 09:41:21 |
Sentencia SUM | geovany | SQL | 2 | 29-10-2004 23:52:24 |
Como crear una sentencia SQL (Insert, update y delete) | sitrico | Conexión con bases de datos | 1 | 14-10-2004 00:02:42 |
sentencia sql??? | empty | SQL | 3 | 07-04-2004 11:01:32 |
Consulta en sql con la sentencia IN? | danytorres | SQL | 6 | 23-09-2003 13:12:14 |
|