Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Consulta de Actualizacion (https://www.clubdelphi.com/foros/showthread.php?t=23919)

tgsistemas 02-08-2005 14:44:51

Consulta de Actualizacion
 
Saludos a todos/as :

Trabajo con SQL2000 y tengo una consulta que produce error en el analizador de consultas, no me deja ni ejecutarla.
He de actualizar un campo de una tabla con los datos de otra tabla pero ambas se encuentran en la subconsulta de seleccion y no tengo claro si esto es posible.
El qry que intento ejecutar es el siguiente :
Código:

UPDATE CMPNASLINSUP
SET CMPNASLINSUP.CDGOORDEN = CMPNAS.NMROORDEN
WHERE (
        SELECT CDGO, NMROORDEN, CDGOCMPNA, CDGOORDEN
        FROM CMPNASLINSUP INNER JOIN CMPNAS ON CMPNASLINSUP.CDGOCMPNA = CMPNAS.CDGO
        WHERE (CMPNASLINSUP.CDGOORDEN = 'A00000000')
        )

Estoy haciendo algo mal, eso seguro... pero no se el qué !!!!
Agradecería cualquier tipo de ayuda al respecto.

Saludos y muchas gracias.

delphi.com.ar 02-08-2005 15:02:00

No tiene mucho sentido hacer una subconsulta de selección, dentro del WHERE sin las intrucciones IN o EXISTS....

Algo ANSI compatible podría ser:
Código SQL [-]
UPDATE CMPNASLINSUP
SET CMPNASLINSUP.CDGOORDEN = (SELECT CMPNAS.NMROORDEN 
                                FROM CMPNAS 
                               WHERE CMPNASLINSUP.CDGOCMPNA = CMPNAS.CDGO) 
WHERE CMPNASLINSUP.CDGOORDEN = 'A00000000'
AND EXISTS (  
            SELECT 1
              FROM CMPNAS 
             WHERE CMPNASLINSUP.CDGOCMPNA = CMPNAS.CDGO   
            )

Pero algunos motores soportan algo mas, esto extraí de la ayuda de MsSql2000
Código SQL [-]
UPDATE titles
   SET ytd_sales = 
      (SELECT SUM(qty)
         FROM sales
            WHERE sales.title_id = titles.title_id
            AND sales.ord_date IN (SELECT MAX(ord_date) FROM sales))
   FROM titles, sales

Saludos!

tgsistemas 03-08-2005 12:44:17

Muchas gracias delphi.com.ar !!!!

Lo he probado esta mañana y me ha funcionado perfectamente, no tengo mucha experiencia con SQL (apenas unos meses) y me estaba liando al realizar la consulta.

Muchas Gracias

Saludos.


La franja horaria es GMT +2. Ahora son las 03:41:05.

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