Od aktualizacji strumienia do 9.0.1 muszę zaktualizować kolo elementów.

To działa dobrze:

UPDATE `tt_content` 
SET colPos = ((tx_flux_parent * 100) + 11) 
WHERE tx_flux_column = "content";

Ale muszę też zaktualizować zlokalizowane elementy treści. Ma w tx_flux_parent zlokalizowany nadrzędny uid. Ale potrzebuję nadrzędnego uid standardowego języka.

Muszę uzyskać wartość "tx_flux_parent" w tt_content przez l18n_parent. Więc próbuję zbudować zapytanie z l18n_parent w ten sposób:

UPDATE `tt_content` as t1 
SET colPos = (( (SELECT t2.tx_flux_parent 
                 FROM tt_content t2 
                 WHERE t1.l18n_parent = t2.uid) * 100) + 11) 
WHERE t1.tx_flux_column = "content";

I zdobądź to:

Zestawienie MySQL: Dokumentacja 1093 - Tabela 't1' jest podana dwukrotnie, zarówno jako cel dla 'UPDATE', jak i jako oddzielne źródło danych

1
User 27 listopad 2018, 17:07

1 odpowiedź

Najlepsza odpowiedź

MySQL nie pozwala na ponowne odwoływanie się do tabeli aktualizowanej w innym podzapytaniu, chyba że znajduje się ona w klauzuli FROM (Tabela pochodna).

Jednak w tym konkretnym przypadku możesz raczej użyć "Self-Join":

UPDATE `tt_content` as t1 
JOIN `tt_content` as t2 
  ON t1.l18n_parent = t2.uid 
SET t1.colPos = ((t2.tx_flux_parent * 100) + 11) 
WHERE t1.tx_flux_column = 'content'
0
Madhur Bhaiya 27 listopad 2018, 17:40