Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MySQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=21)
-   -   Updeta con select (https://www.clubdelphi.com/foros/showthread.php?t=74145)

duilioisola 01-06-2011 15:26:59

Updeta con select
 
Hola a todos... hoy una pregunta para los entendidos en MySQL
Tengo este UPDATE
Código SQL [-]
UPDATE ps_orders c  
SET 
c.tienda_order =  
CONCAT( 
        c.id_customer,
        '-',          
        (SELECT count( d.id_customer ) + 1 
         FROM ps_orders d          
         WHERE d.id_customer = c.id_customer AND d.id_order < c.id_order)
) 
WHERE c.id_order =901
que me da el error
Cita:

#1093 - You can't specify target table 'c' for update in FROM clause
Lo que quiero es que el campo tienda_order tenga un valor que es el codigo de cliente, un guión y la cantidad de pedidos que ha hecho.
Código:

id_customer, count(*), tienda_order
      1    ,    1    , 1-1
      1    ,    2    , 1-2
      2    ,    1    , 2-1
      1    ,    3    , 1-3
...

Con Firebird lo puedo hacer, pero MySQL me está dando este mensaje.
¿Hay alguna otra forma de hacerlo?

abelg 01-06-2011 20:37:13

Hola creo que en updates no puedes definir alias y la cosa quedaría asi:
Código SQL [-]
UPDATE ps_orders
SET 
tienda_order =  
CONCAT( 
        id_customer,
        '-',          
        (SELECT count( d.id_customer ) + 1 
         FROM ps_orders d          
         WHERE d.id_customer = ps_orders.id_customer AND d.id_order < ps_orders.id_order)
) 
WHERE id_order =901


La franja horaria es GMT +2. Ahora son las 14:46:00.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi