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 05-06-2020
Avatar de gmontes
gmontes gmontes is offline
Miembro
 
Registrado: jul 2004
Ubicación: Culiacán, Sinaloa, México
Posts: 668
Poder: 20
gmontes Va por buen camino
Red face campos null al hacer un update desde un select

tengo la version firebird 2.1

al hacer un update en ibexpert

update cinve c set c.precio1 = (select l.precio from tlista_precios l where c.codigo=l.codigo and l.lista=1)

los campos en que no coincide c.codigo=l.codigo me los pone en null y se pierde el valor

es decir
tabla cinve

codigo/ precio1
102 10
103 0
104 20


tabla tlista_precios
codigo/ precio/ lista
103 50 1


despues del update la tabla cinve queda

codigo/ precio1
102 null
103 50
104 null

que estoy haciendo mal??
__________________
Todos llevamos nuestros demonios a cuestas..
Responder Con Cita
  #2  
Antiguo 05-06-2020
Avatar de mRoman
mRoman mRoman is offline
Miembro
 
Registrado: nov 2003
Posts: 599
Poder: 21
mRoman Va por buen camino
Seguramente esto te sucede porq "l.precio" está NULL.

Cita:
Empezado por gmontes Ver Mensaje
tengo la version firebird 2.1

al hacer un update en ibexpert

update cinve c set c.precio1 = (select l.precio from tlista_precios l where c.codigo=l.codigo and l.lista=1)

los campos en que no coincide c.codigo=l.codigo me los pone en null y se pierde el valor

es decir
tabla cinve

codigo/ precio1
102 10
103 0
104 20


tabla tlista_precios
codigo/ precio/ lista
103 50 1


despues del update la tabla cinve queda

codigo/ precio1
102 null
103 50
104 null

que estoy haciendo mal??
Para estos casos usa COALESCE

Código SQL [-]
SELECT COALESCE(MAX( s.sal_consec ),0)
                FROM salida s
              WHERE s.almacen_id=:v_alm_origen
                AND s.articulo_id=:v_art_id

Los campos nulos, los deja en 0 "COALESCE( campo,0)" el 0 se sustituye por nulo.

Código SQL [-]
update cinve c set c.precio1 = (select COALESCE(l.precio,0) from tlista_precios l where c.codigo=l.codigo and l.lista=1)
__________________
Miguel Román

Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !!

Última edición por mRoman fecha: 05-06-2020 a las 19:32:11.
Responder Con Cita
  #3  
Antiguo 05-06-2020
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 913
Poder: 22
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
En cuanto a la respuesta de la consulta está en lo correcto lo que te entrega.

Ahora para que no asigne null a lo campo precio1 que se está actualizando, te sugiero una pequeña modificación al código proporcionado pór el compañero mRoman...

Código SQL [-]
update cinve c set c.precio1 = COALESCE( (select l.precio from tlista_precios l where c.codigo=l.codigo and l.lista=1), c.precio1)

Saludos cordiales
Responder Con Cita
  #4  
Antiguo 08-06-2020
Avatar de gmontes
gmontes gmontes is offline
Miembro
 
Registrado: jul 2004
Ubicación: Culiacán, Sinaloa, México
Posts: 668
Poder: 20
gmontes Va por buen camino
entonces es correcto lo que entrega

pense que si el campo c.codigo=l.codigo no coincidian me dejaria el campo c.precio1 con su valor original en lugar de cambiarmelo a null
__________________
Todos llevamos nuestros demonios a cuestas..
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
Consulta update desde una consulta select jafera SQL 3 08-05-2015 19:56:02
Update con Select wopc SQL 6 10-05-2011 19:36:02
NULL's como cero en SELECT Faust Firebird e Interbase 9 30-12-2008 22:11:17
Update Select JAI_ME Varios 2 18-07-2008 23:36:15
select (pero un cero en vez de NULL) Osorio SQL 5 06-08-2004 22:16:15


La franja horaria es GMT +2. Ahora son las 21:55:26.


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