Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-09-2011
AnuardMichelen AnuardMichelen is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 38
Poder: 0
AnuardMichelen Va por buen camino
Actualizar Datos En una misma tabla. (Mensaje Correcto)

Hola a todos, espero que estén bien.

Estoy tratando de actualizar unos registros de una tabla y lo estoy haciendo tomando como referencia una cantidad de registros de esa misma tabla. Pero a la hora de realizar el Update tengo como resultado datos que no necesito.

Para explicarme mas completo, ejemplo:

Tengo el plan A el cual contiene los datos organizados, entonces tengo varios planes B,C,D,F.... mas hay datos que están en el Plan A que necesariamente no tienen que estar o no están en los demás planes estos registro no los necesito.

Este es el Update que estoy realizando:

Código SQL [-]
Update planes_servicios O set o.precio_regular = coalesce 
((select d.precio_regular from planes_servicios D where d.id_plan = 'PLANMSTRO' 
and o.id_servicio = d.id_servicio),0) 
where coalesce (IN_PLAN, 'F') = 'F' and coalesce (RECLAMABLE,'F') = 'F' 
and exists (select h.precio_regular from planes_servicios H where h.id_plan = 'PLANMSTRO')

Gracias por su tiempo y ayuda.
Bendiciones a todos.
Responder Con Cita
  #2  
Antiguo 02-09-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
este mensaje se aprecia mejor...
pero para ser mas descriptivo podrias colocar ejemplos de como estan los datos y como quieres el resultado

porque aparentemente la consuta se ve bien... pero y los datos?

pon un ejemplo porfa
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #3  
Antiguo 02-09-2011
AnuardMichelen AnuardMichelen is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 38
Poder: 0
AnuardMichelen Va por buen camino
Ok este seria un ejemplo con la consulta que escribi:

Plan A Plan B

Servicio Nombre Precio Servicio Nombre Precio
001 Consulta 150 001 Consulta 50
002 Control 200 003 Radiogra 250

Me explico; los servicios del Plan A son los correctos. si el servicio 001 en el plan tiene precio 150 entonce el trabajo del Update es ponerlo 150 en el plan B.
Pero si el servicio 002 que esta en el plan A y no en el plan B lo que no quiero es que me lo inserte y le coloque precio 0, que es lo que me esta pasando.

Gracias por tu tiempo amigo.
Dios te bendiga.
Responder Con Cita
  #4  
Antiguo 02-09-2011
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
Para entenderlo mejor, ¿puedes poner la estructura de las tablas?

Ejemplo:
Código SQL [-]
create table 
tbTIPOSPROFESIONALES  
( 
  ID          domCodigoNoNulo, 
  Nombre      domNombre, 
  primary key (ID) 
); 
 
create table 
tbPAISES 
( 
  ID          domCodigoNoNulo, 
  Nombre      domNombre, 
  primary key (ID) 
); 
 
create table 
tbCIUDADES 
( 
  ID          domCodigoNoNulo, 
  ID_pais     domCodigoNoNulo, 
  Nombre      domNombre, 
  primary key (ID), 
  foreign key (ID_pais) references tbPAISES(ID) 
);
Responder Con Cita
  #5  
Antiguo 02-09-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
que tal algo asi
Código SQL [-]
Select Precio_regular into #Tempo from planes_servicios where d.id_plan = 'PLANMSTRO' 
Update planes_servicios O set o.precio_regular = 
(Select Precio_regular from planes_servicios where isnull(IN_PLAN, '') = 'F' and Isnull(RECLAMABLE, '') = 'F' and
exists (select h.precio_regular from #tempo))
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #6  
Antiguo 02-09-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
mmm dandole vueltas al asunto creo que tampoco funcionaria
estamos chequeando el precio pero no el plan....
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #7  
Antiguo 13-10-2011
abelg abelg is offline
Miembro
 
Registrado: jul 2004
Posts: 50
Poder: 20
abelg Va por buen camino
que tal asi, me cree unas tablas temporales para simular tu tabla real. lo único que en realidad te interesaría es el Update, puedes testearlo en Sql Server este script pero el update creo funcionará para cualquier base de Datos.

Código SQL [-]
Create table #planes_servicios (
  id int identity not null,
  servicio varchar(10),
  nombre   varchar(10),
  precio money,
  id_plan varchar(20)
)

insert into #planes_servicios (servicio, nombre, precio, id_plan) values ('001', 'Consulta', 150, 'PLANMAESTRO')
insert into #planes_servicios (servicio, nombre, precio, id_plan) values ('002', 'Control', 75, 'PLANMAESTRO')
insert into #planes_servicios (servicio, nombre, precio, id_plan) values ('003', 'Radiogra', 180, 'PLANMAESTRO')
insert into #planes_servicios (servicio, nombre, precio, id_plan) values ('001', 'Consulta', 50, 'PLAN-B')
insert into #planes_servicios (servicio, nombre, precio, id_plan) values ('002', 'Control', 70, 'PLAN-B')
insert into #planes_servicios (servicio, nombre, precio, id_plan) values ('003', 'Radiogra', 80, 'PLAN-B')
insert into #planes_servicios (servicio, nombre, precio, id_plan) values ('004', 'XXXXXXXX', 750, 'PLAN-B')

Select *
from #planes_servicios

update #planes_servicios set precio = (Select ps.precio 
                                       from #planes_servicios ps
                                       where ps.id_plan = 'PLANMAESTRO' and ps.servicio = #planes_servicios.servicio)
where id_plan <> 'PLANMAESTRO' and servicio in (Select p.servicio 
                                       from #planes_servicios p 
                                       where p.id_plan = 'PLANMAESTRO')

Select *
from #planes_servicios

Drop table #planes_servicios

El update es lo que te interesaría.

Salu2
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
Actualizar tabla con datos de otra tabla mediante UPDATE Rockin Firebird e Interbase 18 28-11-2007 19:15:42
Actualizar un campo de una tabla con datos que se encuentran en otra tabla Morphine SQL 4 15-12-2006 22:47:42
¿Cómo puedo actualizar en el DBGrid los datos que inserto en la misma sesión? nuri SQL 3 18-07-2005 18:27:19
copiar datos en la misma tabla jourdan SQL 7 14-05-2003 18:02:00


La franja horaria es GMT +2. Ahora son las 21:31:04.


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