Stránka 1 z 1

Problém se sql dotazem

Napsal: sob 15. úno 2014, 20:15
od Václav Sedlář
Ahoj, mám problém s jedním sql dotazem, který nejde a vypisuje tuto hlášku:
#1093 - You can't specify target table 'ankety_moznosti_vysledky' for update in FROM clause
SQL dotaz:

Kód: Vybrat vše

UPDATE ankety_moznosti_vysledky SET pocet_hlasu = pocet_hlasu -1 WHERE id_ankety = 2 AND id_moznosti = (SELECT max(id_moznosti) FROM ankety_moznosti_vysledky WHERE id_ankety = 2)
Když udělám zvlášť ten select dotaz (co je na konci v závorce), tak mi vrátí id a to když vrazím do updatu, tak to také projde...

tedy toto funguje:

Kód: Vybrat vše

SELECT max(id_moznosti) FROM ankety_moznosti_vysledky WHERE id_ankety = 2

vrátí 3

a pak:

UPDATE ankety_moznosti_vysledky SET pocet_hlasu = pocet_hlasu -1 WHERE id_ankety = 2 AND id_moznosti = 3

update funguje
Proč to tedy nejde v jednom dotazu. Díky

P.S.: Vysvětlení, proč a kde to potřebuji: Mám na stránkách hlasování pro reg. uživatele, když se založí hlasování, tak do tabulky ankety_moznosti_vysledky se zapíše id možnosti (PK), id ankety (FK), text možnosti a počet hlasů. Při zakládání ankety se u všech možností zapíše počet hlasů=0, ale k tomu se vygeneruje ještě jako poslední možnost zdržuji se hlasování, kde se nastaví počet hlasů=počet userů...

Při hlasování tedy se zaznamená hlas pro označenou odpověď a odečte se hlas u možnosti "zdržel se hlasování"

A výše uvedené sql dotazy potřebuji, když se smaže uživatel v době, kdy už je anketa založena, ale ještě nespuštěná...

Re: Problém se sql dotazem

Napsal: sob 15. úno 2014, 21:27
od mlrs
nezkousels dat ten select co mas ve where pres inner join?
Tj.
update
...
set
...
from
...
inner join (select ...) on ...