Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z zapytaniem SQL
Forum PHP.pl > Forum > PHP
Martio
Przy wykonaniu takiego polecenia:

  1. DELETE FROM `content_tags` WHERE `id` NOT IN (SELECT `id` FROM `content_tags` GROUP BY `content_id`, `tag_id`);


pojawia się następujący błąd:

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

Zrzut tableli:

  1. CREATE TABLE `content_tags` (
  2. `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `content_id` int(10) UNSIGNED NOT NULL DEFAULT '0',
  4. `tag_id` int(10) UNSIGNED NOT NULL DEFAULT '0',
  5. PRIMARY KEY (`id`),
  6. KEY `page_tags_FKIndex1` (`tag_id`),
  7. KEY `page_tags_FKIndex2` (`content_id`)
  8. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=617 ;


Czy ktoś jest w stanie mi pomóc?
nospor
Cytat
You can't specify target table 'content_tags' for update in FROM clause
Nie mozesz w podzapytaniu operowac na tej samej tabeli z ktorej usuwasz
Martio
Cytat(nospor @ 11.02.2008, 17:12:35 ) *
Nie mozesz w podzapytaniu operowac na tej samej tabeli z ktorej usuwasz


Ale czy jest jakieś rozwiązanie tego problemu?
.radex
dwa zapytania?
Martio
Rozwiązałem problem poprzez tymczasowe utworzenie widoku

  1. CREATE VIEW `_content_tags_to_clean` AS SELECT `id` FROM `content_tags` GROUP BY `content_id`, `tag_id`;
  2. DELETE FROM `content_tags` WHERE `id` NOT IN (SELECT `id` FROM `_content_tags_to_clean`); DROP VIEW `_content_tags_to_clean`;
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.