Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno MySQL - update + join

Toto je zoznam záznamov, ktoré chcem upraviť:

select nakup.id 
from nakup
inner join zakaznik on nakup.zakaznik_id=zakaznik.id 
where zakaznik.skupina_id='1' 

Potrebujem pri týchto záznamoch upraviť toto:

update nakup 
set spracovane_skupina=1 

Toto je výsledok:

update nakup 
set spracovane_skupina='1' 
where
(
  select nakup.id 
  from nakup
  inner join zakaznik on nakup.zakaznik_id=zakaznik.id 
  where zakaznik.skupina_id='1'
)

Dostávam chybovú hlášku:

SQL Error (1093): You can't specify target table 'nakup' for update in FROM clause

Doplňujúce informácie:
- MySQL 5.5.8
- motor tabuľky "nakup" je InnoDB
- motor tabuľky "zakaznik" je MyISAM

Toto som mal ako inšpiráciu:
339622-sql-update

Dúfam, že som dodal všetky potrebné informácie. Chcel by som vás poprosiť o pomoc s týmto SQL príkazom. Tabuľky som pre prehľadnosť premenoval na slovenské, takže, ak tam nájdete nejaký preklep, je to len prepisom na poradňu. V originále mám anglické názvy.

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
UPDATE nakup t1 JOIN zakaznik t2 ON t1.id=t2.id SET t1.spracovane_skupina='1' WHERE t2.skupina_id =…
pme 09.05.2012 22:32
pme
Takže toto jediné (* ako som neskôr zistil, nie je to jediné, to horné som len zle odpísal) funguje…
msx. 09.05.2012 22:44
msx.
Nevim jak na MySQL, ale pro MS SQL by to vypadalo takto UPDATE t1 SET t1.spracovane_skupina='1' FRO… poslední
Jan Fiala 10.05.2012 12:54
Jan Fiala

Takže toto jediné (* ako som neskôr zistil, nie je to jediné, to horné som len zle odpísal) funguje správne. Akurát je tam malá chybička:

UPDATE nakup t1
JOIN zakaznik t2 ON t1.zakaznik_id=t2.id
SET t1.spracovane_skupina='1'
WHERE t2.skupina_id = '1'

Ďakujem za pomoc.

Zpět do poradny Odpovědět na původní otázku Nahoru