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 Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-06-2008
sargento elias sargento elias is offline
Miembro
 
Registrado: mar 2008
Posts: 109
Poder: 17
sargento elias Va por buen camino
problemas con Update.

Buenos diass!!

A ver si podeis ayudarme, tengo dos tablas, clientes y repartidores , y necesito hacer un update en un campo de la tabla clientes cuando se cumpla la condición que clientes.cod = repartidores.cod.

El problema viene cuando quiero darle el valor a pelo, no el de un campo de la tabla, sino haría un select sobre el campo y le daría el valor.

update clientes set valor = (select valor form clientes..) where condición.

El problema es cuando el valor quiero darselo yo, no que lo saque de un campo de la tabla.
update clientes set valor ='S' where condición.

Entonces al ser una condición de dos tablas diferentes no me deja. A ver si le encontrais solución.

Lo quiero ejecutar en Firebird 2.0

Gracias
Responder Con Cita
  #2  
Antiguo 11-06-2008
Avatar de RolphyReyes
RolphyReyes RolphyReyes is offline
Miembro
 
Registrado: ago 2004
Ubicación: Santo Domingo
Posts: 285
Poder: 20
RolphyReyes Va por buen camino
Talking

Saludos.

Para esa operación puedes hacer un StoredProcedure que contenga las dos sentencias y dependiendo de un valor que le mandes al Procedure ejecute una de ellas.

Me refiero:

Código SQL [-]
CREATE PROCEDURE PRUEBA(CONDICION : VARCHAR; VALOR : VARCHAR)
BEGIN
 IF CONDICION = 'S' THEN
UPDATE TABLA1 SET CAMPO1 = 'S' WHERE CAMPO2 = 1;
ELSE
UPDATE TABLA1 SET CAMPO1 = (SELECT CAMPO1 FROM TABLA2);
END;

Es solo una idea, ese código no es que te vaya a funcionar sino que es la esencia de lo que quiero expresarte.

Hasta luego.
__________________
Gracias,
Rolphy Reyes
Responder Con Cita
  #3  
Antiguo 11-06-2008
Avatar de rastafarey
rastafarey rastafarey is offline
Miembro
 
Registrado: nov 2003
Posts: 927
Poder: 21
rastafarey Va por buen camino
Código SQL [-]
Update t1 set c1 = (select 
case t1 
   when 1 then c2
   when 2 then c3
   when 3 then c4
   else c5
end
from t2 where condicion)
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa.
Responder Con Cita
  #4  
Antiguo 11-06-2008
sargento elias sargento elias is offline
Miembro
 
Registrado: mar 2008
Posts: 109
Poder: 17
sargento elias Va por buen camino
Lo del procedimiento almacenado, ya lo tenía, gracias, solo me interesaba saber si podía hacer esto en otra sentencia Update.

UPDATE CLIENTES SET clientes.CAMPO = 'S'
WHERE CLIENTES.COD = REPARTIDORES.COD

No he entendido el segundo post, si puedes explicarmelo..
Responder Con Cita
  #5  
Antiguo 11-06-2008
celades1 celades1 is offline
Miembro
 
Registrado: ago 2005
Posts: 116
Poder: 19
celades1 Va por buen camino
Hola


Código SQL [-]
UPDATE CLIENTES SET clientes.CAMPO = 'S'
WHERE exists(select null from repartidores 
where CLIENTES.COD = REPARTIDORES.COD)





Saludos
Responder Con Cita
  #6  
Antiguo 11-06-2008
Avatar de rastafarey
rastafarey rastafarey is offline
Miembro
 
Registrado: nov 2003
Posts: 927
Poder: 21
rastafarey Va por buen camino
[quote=rastafarey;292774]
Código SQL [-]
Update t1 set c1 = (select 
case t1 
   when 1 then c2
   when 2 then c3
   when 3 then c4
   else c5
end
from t2 where condicion)
Código SQL [-]
Update t1 set c1 = (select 
case t1 
   when 1 then c2
   when 2 then c3
   when 3 then c4
   else 'S'
end
from t2 where condicion)
Creo que puedes interpretar la sentencia y usarla a tu manera.
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa.
Responder Con Cita
  #7  
Antiguo 12-06-2008
sargento elias sargento elias is offline
Miembro
 
Registrado: mar 2008
Posts: 109
Poder: 17
sargento elias Va por buen camino
celades

Por lo que entendido tiene que estar el campo vacío?

El clientes.campo ya tiene valores 'N' y 'S' tu consulta no me da errores, pero no me hace el update. No quiero cambiar todos los 'N' solo los que cumplan la condición.
Responder Con Cita
  #8  
Antiguo 12-06-2008
celades1 celades1 is offline
Miembro
 
Registrado: ago 2005
Posts: 116
Poder: 19
celades1 Va por buen camino
Hola

no hagas caso del null simplemente lo que hace el exists es que se updatee siempre que la subconsulta devuelva uno o varios registros o sea que sea cierta.

El
Código SQL [-]
UPDATE CLIENTES cl SET cl.CAMPO = 'S'WHERE exists(select null from repartidores r where cl.COD = r.COD)

El update creo que esta bien a no ser que no te haya entendido bien

Saludos
Responder Con Cita
  #9  
Antiguo 12-06-2008
Avatar de rastafarey
rastafarey rastafarey is offline
Miembro
 
Registrado: nov 2003
Posts: 927
Poder: 21
rastafarey Va por buen camino
Resp

Compadre Dame la estructuras de las tablas y escribe la cosulta mas o menos como la quieres para escribirte la consult acomo la necesitas.
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa.
Responder Con Cita
  #10  
Antiguo 12-06-2008
sargento elias sargento elias is offline
Miembro
 
Registrado: mar 2008
Posts: 109
Poder: 17
sargento elias Va por buen camino
no tira

Celades, la consulta no me da error pero no me modifica nada.

rasta

A ver tengo clientes(cod,trec(tipo Si/NO)
y tengo repartidores(cod)

Entre ellas no hay relación ninguna. Los campos de clientes.trc son igual a 'N'
y quiero hacer un Update en ese campo de clientes al valor 'S' cuando el cod de clientes sea igual al de repartidores.
No me importa como sea la consulta si funciona. Y me ahorro el procedimiento almacenado que creo no es necesario.

firebird 2.0
Responder Con Cita
  #11  
Antiguo 12-06-2008
Avatar de rastafarey
rastafarey rastafarey is offline
Miembro
 
Registrado: nov 2003
Posts: 927
Poder: 21
rastafarey Va por buen camino
Resp

Aqui estan las tabla
Código SQL [-]
CREATE TABLE "Clientes" (
    "Cod"  VARCHAR(20) NOT NULL,
    "Trc"  CHAR(1) NOT NULL
);


CREATE TABLE "Repartidores" (
    "Cod"  VARCHAR(20) NOT NULL
);
Y Aqui esta el sql
Código SQL [-]
update "Clientes" C Set C."Trc" = 'S' Where C."Cod" In ( select "Cod" from "Repartidores")
Adapta las cosultas con los campo que tienes.

Si entendi bien la pregunta esa es la respuesta.

Espero te sirva.
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa.
Responder Con Cita
  #12  
Antiguo 12-06-2008
Avatar de rastafarey
rastafarey rastafarey is offline
Miembro
 
Registrado: nov 2003
Posts: 927
Poder: 21
rastafarey Va por buen camino
Cita:
Empezado por celades1 Ver Mensaje
Hola


Código SQL [-]
UPDATE CLIENTES SET clientes.CAMPO = 'S'
WHERE exists(select null from repartidores 
where CLIENTES.COD = REPARTIDORES.COD)





Saludos
Aunque esta se ejecuta mas rapido.
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa.
Responder Con Cita
  #13  
Antiguo 12-06-2008
sargento elias sargento elias is offline
Miembro
 
Registrado: mar 2008
Posts: 109
Poder: 17
sargento elias Va por buen camino
Error

Este es el error que me da en vuestras dos consultas.

Insert failed because a column definition includes validation constraints. Validation error for column trc, value 'S'.
Responder Con Cita
  #14  
Antiguo 12-06-2008
Avatar de rastafarey
rastafarey rastafarey is offline
Miembro
 
Registrado: nov 2003
Posts: 927
Poder: 21
rastafarey Va por buen camino
Tu crees que aqui somos adivinos o algo por el estilo.

Pon el script de tus tablas. script script script script

No se si me explique. Lo que aui necesitamos para poderte ayudar.
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa.

Última edición por rastafarey fecha: 12-06-2008 a las 19:20:40.
Responder Con Cita
  #15  
Antiguo 12-06-2008
sargento elias sargento elias is offline
Miembro
 
Registrado: mar 2008
Posts: 109
Poder: 17
sargento elias Va por buen camino
Vale lo tengo, funciona perfectamente.las dos consultas.Muchisimas gracias y perdonad las molestias.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
problemas con el UPDATE huwabe78 SQL 7 30-11-2006 14:44:48
urgente problemas con update vero_17jm SQL 2 29-11-2006 11:52:39
Problemas de con UPDATE jmlifi Varios 3 20-05-2005 22:59:42
problemas con el insert y el update tiagor64 SQL 5 16-02-2005 18:46:09
Problemas con Update ramonibk MS SQL Server 2 01-09-2004 15:40:32


La franja horaria es GMT +2. Ahora son las 20:52:40.


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