Oppure

Loading
26/06/10 14:38
giocala88
Salve ragazzi, ho questo il seguente problema: ho implementato in mysql una tabella Prodotto, con due dei campi prezzo e data. Vorrei aggiornare lo stesso campo prezzo di tutti i prodotti che hanno la differenza giorni tra la data odierna e quella del prodotto minore o uguale a 15 oppure, nel caso in cui non si presentasse questa condizione, aggiornare il prezzo del prodotto con la differenza giorni minore.

La subquery
SELECT (prezzo*45/100) as offerta  FROM Prodotto     WHERE codice_reparto = 'FRIGO' AND (DATEDIFF(data, CURDATE()) <= 15 OR DATEDIFF(data, CURDATE()) = (SELECT min(DATEDIFF(data, CURDATE())) FROM Prodotto))


va alla grande.
Il problema è l'implementazione della funzione di aggiornamento riportata qui di seguito:

$query = ("UPDATE Prodotto SET prezzo = (SELECT (prezzo*45/100) as offerta  FROM Prodotto     WHERE codice_reparto = 'FRIGO' AND (DATEDIFF(data, CURDATE()) <= 15 OR DATEDIFF(data, CURDATE()) = (SELECT min(DATEDIFF(data, CURDATE())) FROM Prodotto)))");


infatti mi da il seguente errore:

"ERROR 1093 (HY000): You can't specify target table 'Prodotto' for update in FROM clause"

Dove sbaglio? ... Come posso risolvere questo problema?
Grazie a tutti. 8-)
aaa
26/06/10 18:39
Mte90
da quello che dice l'errore mi sembra che non puoi modificare la tabella che su cui hai fatto la select.
aaa
27/06/10 12:45
giocala88
Impossibile, perchè se io effettuassi un UPDATE senza l'uso di subquery, questi mi modifica il campo che io intendo modificare ...8-|
Consigli? Grazie ancora
aaa