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-08-2005
Avatar de tgsistemas
tgsistemas tgsistemas is offline
Miembro
 
Registrado: dic 2003
Ubicación: Barcelona
Posts: 149
Poder: 21
tgsistemas Va por buen camino
Unhappy 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.
__________________
Toni | blog
Responder Con Cita
  #2  
Antiguo 02-08-2005
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
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!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #3  
Antiguo 03-08-2005
Avatar de tgsistemas
tgsistemas tgsistemas is offline
Miembro
 
Registrado: dic 2003
Ubicación: Barcelona
Posts: 149
Poder: 21
tgsistemas Va por buen camino
Thumbs up

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.
__________________
Toni | blog
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 18:18:44.


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