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 27-01-2005
tiagor64 tiagor64 is offline
Miembro
 
Registrado: ene 2005
Posts: 48
Poder: 0
tiagor64 Va por buen camino
Actualizar el contenido de las primeras celdas UPDATE TOP

Hola foro:

Necesitaria q alguien me saque d un apuro, necesito actualizar el valor de los 15 primeros registros q saca una consulta, pero no se como hacerlo.
La consulta que funciona es esta:

SELECT TOP 15 REGISTRE.ORDEN_FABRICACION, REGISTRE.ACABADOS, REGISTRE.FECHA, REGISTRE.PRIORIDAD
FROM REGISTRE
WHERE (((REGISTRE.ACABADOS) Is Null))
ORDER BY REGISTRE.FECHA, REGISTRE.PRIORIDAD;

pero no se como hacer para que me modifique el valor del campo acabados de estos registros.

con la consulta:

update registre
set acabados = "0"
where (((REGISTRE.ACABADOS) Is Null))
ORDER BY REGISTRE.FECHA, REGISTRE.PRIORIDAD

entonces me actualiza el valor de todos los registros y solo necesitaria los 15 o 10 primeros.

Alguien puede ayudarme??
Gracias por adelantado.
Responder Con Cita
  #2  
Antiguo 27-01-2005
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.281
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Si la tabla REGISTRE tiene "clave primaria" puedes utilizar un IN. Algo así (te lo pongo sin probar, así que ya dirás si me he dejado algo); Como mínimo te servirá para coger la idea...

(suponiendo por ejemplo que el campo ORDEN_FABRICACION fuera la primary key)

Código SQL [-]
  update registre
  set acabados = "0"
  where ORDEN_FABRICACION IN (
     SELECT TOP 15 REGISTRE.ORDEN_FABRICACION
     FROM REGISTRE
     WHERE (((REGISTRE.ACABADOS) Is Null)))
 ORDER BY REGISTRE.FECHA, REGISTRE.PRIORIDAD

Se trata de usar el SELECT..IN para seleccionar los 15 primeros y luego hacer el update sólo sobre esos.

NOTA: El ORDER BY para el Update no es necesario
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 27-01-2005
tiagor64 tiagor64 is offline
Miembro
 
Registrado: ene 2005
Posts: 48
Poder: 0
tiagor64 Va por buen camino
Smile

Muchas, muchisimas gracias.

si que ha servido para pillar la idea, me has sacado de un buen atasco mental.

la sentencia me a qedado asi:

UPDATE registre SET acabados = "0"
WHERE ORDEN_FABRICACION IN
(SELECT TOP 1 REGISTRE.ORDEN_FABRICACION FROM REGISTRE
WHERE (((REGISTRE.ACABADOS) Is Null))
ORDER BY REGISTRE.FECHA, REGISTRE.PRIORIDAD);

Lo que me pasaba era q la tenia asi y me devolvia demasiados campos, y no entendia el problema

update registre
set acabados = "0"
where
( SELECT TOP 15 * FROM REGISTRE
WHERE (((REGISTRE.ACABADOS) Is Null))
ORDER BY REGISTRE.FECHA, REGISTRE.PRIORIDAD)

muchas gracias de nuevo.



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


La franja horaria es GMT +2. Ahora son las 04:12:02.


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