Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-06-2006
Acanol Acanol is offline
Miembro
 
Registrado: abr 2006
Ubicación: Elche
Posts: 75
Poder: 19
Acanol Va por buen camino
Update con Inner Join Funciona en Access pero no en firebird

Muy buenas, tengo la siguiente consulta en acces la cual funciona perfectamente, pero estoy migrando a firebird y no consigo que me funcione, ¿Que modificaciones debo hacer?

Código SQL [-]
     UPDATE TBSALIDA2 TbS2 INNER JOIN TBPUNTOSCIRCUITO TbPnts
     ON TbS2.CODPUNTO=TbPnts.NUMPUNTO 
     SET TbS2.NUMMARCHA = TbPnts.NUMMARCHA
__________________
{Saludos.}

//Todos los dias se aprende algo nuevo, por que no enseñar nosotros?
Responder Con Cita
  #2  
Antiguo 07-06-2006
celades1 celades1 is offline
Miembro
 
Registrado: ago 2005
Posts: 116
Poder: 19
celades1 Va por buen camino
hola

Código SQL [-]
 UPDATE TBSALIDA2 TbS2 SET TbS2.NUMMARCHA = 
 ( select TbPnts.NUMMARCHA from TBPUNTOSCIRCUITO TbPnts
     where TbS2.CODPUNTO=TbPnts.NUMPUNTO )

saludos
Responder Con Cita
  #3  
Antiguo 07-06-2006
Acanol Acanol is offline
Miembro
 
Registrado: abr 2006
Ubicación: Elche
Posts: 75
Poder: 19
Acanol Va por buen camino
Muy buenas, gracias por tu respuesta Celades1, tu propuesta funciona perfectamente, pero me pregunto si seria posible evitar tener que hacer la subconsulta (iria mas rapido si pudiesemos evitarla, ¿no?), ¿existiria alguna otra alternativa?.

Muchas gracias por tu tiempo.
__________________
{Saludos.}

//Todos los dias se aprende algo nuevo, por que no enseñar nosotros?

Última edición por Acanol fecha: 07-06-2006 a las 16:51:36.
Responder Con Cita
  #4  
Antiguo 07-06-2006
Avatar de Paoti
Paoti Paoti is offline
Miembro
 
Registrado: may 2003
Ubicación: Monterrey. N.L., México
Posts: 612
Poder: 21
Paoti Va por buen camino
ineer join versus where

Hola.


La solución que te presenta celades es muy buena.



y por experiencia (o hábito), siemrpe he usado subconsultas o clausula WHERE en vez de utilizar JOINS.



Seria interesante hacer una prueba de performance sobre cual de las dos formas puede tener un mejor rendimiento, hablando ya de grandesvolumenes de datos.



porque lagunos opinas que con JOINS, otros que con WHERE.
__________________
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
Responder Con Cita
  #5  
Antiguo 08-06-2006
Acanol Acanol is offline
Miembro
 
Registrado: abr 2006
Ubicación: Elche
Posts: 75
Poder: 19
Acanol Va por buen camino
Buenos dias, yo soy un pipiolo en esto de las bases de datos (en especial con firebird) y estoy aprendiendo por dias, me encanta . Mi jefe me dice que quiere hacerlo con joins porque dice que es mas rapido, y si el lo dice... xDD yo mientras no me den una solucion de como se hace con joins en firebird (que no se si sera posible) sigo con la opcion de celades que me funciona de P*** M**** XDD .
__________________
{Saludos.}

//Todos los dias se aprende algo nuevo, por que no enseñar nosotros?
Responder Con Cita
  #6  
Antiguo 27-05-2012
Avatar de mightydragonlor
[mightydragonlor] mightydragonlor is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Medellín-Colombia
Posts: 587
Poder: 18
mightydragonlor Va por buen camino
Encontré este ejemplo que me ha servido de mucho con updates masivos.

Código SQL [-]
EXECUTE BLOCK
AS
DECLARE VARIABLE field1 type;
DECLARE VARIABLE field2 type;
...etc.
DECLARE VARIABLE pk type;
BEGIN
for select pk, field1, field2, ... from src_table
into k, :field1, :field2, ...
do update dest_table set field1 = :field1, field2 = :field2, ...
where pk = k;
END

Espero le sirva a alguien.

Saludos.
__________________
mas confundido que Garavito el día del Niño.
Responder Con Cita
  #7  
Antiguo 27-05-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Está bien saberlo 6 años después
De todas formas, no sé si eso andará en firebird
Responder Con Cita
  #8  
Antiguo 27-05-2012
Avatar de mightydragonlor
[mightydragonlor] mightydragonlor is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Medellín-Colombia
Posts: 587
Poder: 18
mightydragonlor Va por buen camino
Código SQL [-]
    --Actualizamos los ingredientes
    --reduciendo la cantidad de los mismos
    --en la proporción requerida por los detalles de la formula
      FOR SELECT
        FD.INGR_UUID, FD.FODE_CANTIDAD
      FROM
        TBLFORMULA F
        INNER JOIN TBLFORMULA_DETALLE FD ON F.FORM_UUID = FD.FORM_UUID
        --INNER JOIN TBLINGREDIENTE I ON FD.INGR_UUID = I.INGR_UUID
      WHERE
        F.FORM_UUID = CHAR_TO_UUID(:FORM_UUID_IN)
        AND (FD.FODE_ACTIVO = '1') --Sólo se consulta lo activo.
        --AND (I.INGR_CANTIDAD < (FD.FODE_CANTIDAD * :CANTIDAD)) --Menor cantidad de ingredientes de los necesarios
      INTO
        :INGR_UUID,
        :FODE_CANTIDAD
      DO
      UPDATE TBLINGREDIENTE IU
      SET
        IU.INGR_CANTIDAD = IU.INGR_CANTIDAD - (:FODE_CANTIDAD * :CANTIDAD)
      WHERE
        IU.INGR_UUID = :INGR_UUID;
Yo acabo de hacer esto y me funciona perfectamente =)
__________________
mas confundido que Garavito el día del Niño.
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
Problema con Update e inner join Leonardo SQL 1 06-06-2006 02:21:10
La insercion de registros funciona pero..... ilichhernandez Conexión con bases de datos 1 22-10-2005 11:24:33
algo basico pero no me funciona Yoli Conexión con bases de datos 1 02-04-2005 15:12:07
Update de un DBGrid que contiene JOIN gluglu SQL 3 14-02-2005 18:04:25
Problema con Join en Access ogorut SQL 2 25-06-2003 09:25:05


La franja horaria es GMT +2. Ahora son las 15:31:00.


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