FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
update con tablas relacionadas
Buenas Tardes.
Tengo 2 tablas en una base firebird La tabla Articulos y la tabla Items. La tabla Articulos utiliza el campo Articulos.FK_Items para relacionarse con la tabla Items a travez de Items.ID La relacion entre Articulos e Items es 1 a 1 Necesito actualizar un campo de la tabla Articulos colocando un valor fijo para el caso en que el campo codigo de la tabla Items tenga un determinado valor es decir algo similar a esto pero que funcione ya que el error que informa es: "Error ejecutando SQL: Dynamic SQL Error SQL ERROR code= -104 Token unknown - line 1, column 43 FROM" La syntaxis que utilizo es:
Muchas gracias por alguna ayuda disponible. Última edición por Casimiro Notevi fecha: 25-10-2012 a las 22:53:17. |
#2
|
||||
|
||||
A ver, intenta algo así:
Así sería en MySQL. Crucemos los dedos porque también lo sea en Firebird. // Saludos |
#3
|
|||
|
|||
Por el momento continua dando un mensaje de error.
"Error ejecutando SQL: Dynamic SQL Error SQL ERROR code= -104 Token unknown - line 2, column 1 INNER" Muchas Gracias por comunicarte. |
#5
|
|||
|
|||
Esta estuvo perfecta, funcionó según lo esperado.
Gracias por comunicarte y por tu ayuda. Muchas muchas gracias |
#6
|
||||
|
||||
Creo que la sintaxis sería más o menos así:
Creo que también puedes cambiar exists por in EDITO: bueno, no he dicho nada, veo que te ha servido la de Román.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código Únete al grupo Teaming clubdelphi | Colabora mediante Paypal Última edición por Casimiro Notevi fecha: 29-10-2012 a las 22:32:50. |
#7
|
|||
|
|||
Si si, me ha servido lo de Roman pero gracias por tu aporte y por responder Casimiro. porque justamente estaba necesitando realizar
otra actualizacion con las tablas muy similar a la consulta anterior. Esta vez se trata de colocar en el campo Articulos.Codigo_segundo='U' para todos aquellos registros que en la tabla Items tengan un left(items.Codigo,1)='U' es decir que su primer caracter sea igual a 'U' y tu propuesta me ha servido ya que he podido colocar la siguiente syntaxis y funciono muy bien. update articulos set articulos.codigo_segundo = 'U' where articulos.fk_items in (select items.id from items where left(items.codigo,1)='U' ) Muchisimas gracias. Muchas gracias por haberte comunicado. |
#8
|
|||
|
|||
Gracias Casimiro, tambien me ha servido tu ayuda para otra actualizacion que necesitaba hacer y no sabia como lograrla.
Muchas Gracias. Pd. Con firebird me ha funcionado la instruccion utilizando In Cita:
|
#9
|
||||
|
||||
Me alegro
|
#10
|
|||
|
|||
Cita:
__________________
Un saludo, Jesus García |
#11
|
||||
|
||||
Aunque para ello deberá tener ese campo indexado. Algo que algunos olvidan
|
#12
|
||||
|
||||
Aunque a mi me extraña esto del or e in. Acabdo de hacer una prueba con mysql, y en ambos casos usa el índice.
// Saludos |
#13
|
||||
|
||||
Pues acabo de hacer una prueba con firebird y también usa el índice de ambas formas.
|
#14
|
||||
|
||||
Cita:
Hace tiempo hice unas pruebas de "In" contra "Or" en Firebird 1.5, y no solamente en ambos casos usa los índices (era el campo de llave primaria), sino que me resultó más rápida una consulta Select con 10 condiciones Or, que su contraparte In con diez valores separados por coma. Así que me quedé con Or por ser más rápido. |
#15
|
||||
|
||||
Cita:
Saludos.
__________________
mas confundido que Garavito el día del Niño. |
#16
|
||||
|
||||
Cita:
Saludos. |
#17
|
||||
|
||||
El uso del índice es INDEPENDIENTE de si se emplea IN u OR.
Por lo general, y para cualquier motor de bases de datos, una consulta con IN es más lenta debido a que se requiere lanzar tantas subconsultas como criterios a evaluar dentro de IN existan. No es lo mismo, si se puede, enfocarlo desde una evaluación booleana como OR ya que el analizador detecta estos y puede optimizar mejor el proceso. Internamente, de lo que vagamente tengo entendido y leído, Firebird tiene un árbol-AND-OR o algo por el estilo que le permite hacer evaluaciones y comprobaciones de una manera efectiva y puede filtrar los registros en la propia consulta. En cambio, cuando hay un IN se emite la misma consulta para cada valor a fin de determinar si corresponde o no filtrarlo. Saludos, |
#18
|
|||
|
|||
Tenéis razón, estaba equivocado, no sé porque tenía esta idea y siempre que es posible utilizo in en vez de or.
__________________
Un saludo, Jesus García |
#19
|
||||
|
||||
Quien tiene boca, se equivoca
Lo mismo en versiones anteriores era como has contado |
#20
|
||||
|
||||
Seguro Microsoft SQL Server no usa índices ni con In ni con Or.
(este mito sí hay que extenderlo) |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
update a dos tablas relacionadas al mismo tiempo | thelibmx | MS SQL Server | 2 | 14-11-2007 12:08:28 |
Tablas Relacionadas y SQL | Deiv | SQL | 10 | 14-08-2007 15:26:33 |
Update en Tablas Relacionadas | gluglu | Conexión con bases de datos | 0 | 01-10-2004 19:42:50 |
Update de campos clave, tablas relacionadas | jfleming | Conexión con bases de datos | 10 | 26-02-2004 16:55:11 |
tablas relacionadas y update sql | joanajj | Conexión con bases de datos | 4 | 05-08-2003 13:17:23 |
|