PDA

View Full Version : [query] dove sbaglio?


TorpedoBlu
16-05-2005, 11:21
query SQL:


UPDATE utente SET budget = ( (

SELECT budget
FROM utente
WHERE nick = 'alex'
) - (
SELECT valore
FROM giocatori
WHERE cognome = 'zola' ) )
WHERE nick = 'alex'

Messaggio di MySQL:

#1093 - You can't specify target table 'utente' for update in FROM clause


dove sbaglio? le tabelle sono
utente(nick,psw,budget)
giocatori(cognome,ruolo,valore)

RaouL_BennetH
16-05-2005, 11:38
non vorrei prendere una cantonata ma credo tu debba fare così:



UPDATE nome_tabella
SET campi_da_aggiornare WHERE condizione = qualcosa;

TorpedoBlu
16-05-2005, 11:58
infatti è come ho fatto (il valore di budget è il valore attuale meno il valore del giocatore appena comprato)

TorpedoBlu
16-05-2005, 12:02
2000 messaggi :D

cionci
16-05-2005, 12:16
Versione di MySQL ?

TorpedoBlu
16-05-2005, 13:48
mySQL 4.1.9
php 4.3.10
Apache 1.3.33

cionci
16-05-2005, 14:10
Apache 1.3 ??!?!!? Sei rimasto un po' indietro ? :D Metti al 2.0 di corsa...

Comunque potresti fare una cosa del genere:

SELECT @a := budget
FROM utente
WHERE nick = 'alex';

SELECT @b := valore
FROM giocatori
WHERE cognome = 'zola';

UPDATE utente SET budget = (@a - @b) WHERE nick = 'alex';

Se ti si ripresenta l'errore dopo facciamo un valutazione diversa...

TorpedoBlu
16-05-2005, 21:15
ho apache 1.3.33 perchè ho installato easyPHP che mi ha fatto tutto in 1 minuto e 0 sbattimenti, mi serve per un progettino in università e non ho bisogno di opzioni particolari.

la query l'ho divisa come mi hai scritto tu e funziona, non so perchè non funzionasse prima.

grazie, la discussione lasciala aperta per ora perchè ci sono altre parti da implementare e nelle prossime ore potrei dover chiedere ancora.