Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: podzapytanie - drobny problem :)
Forum PHP.pl > Forum > Bazy danych > MySQL
Yacho
mam cos takiego :

  1. INSERT
  2. INTO mod_xgallery_categories(parent_id,
  3. name, description) VALUES('$parentID',(SELECT level
  4. FROM mod_xgallery_categories
  5. WHERE cat_id = $parentID) + 1,'$name','$description')"


i to +1 wywala mi cale zapytanie - szukalem w dokumentacji ale nei wiem... jak dodac jedynke do tego selecta ?
spenalzo
Cytat(Yacho @ 2006-02-10 03:37:05)
mam cos takiego :

  1. INSERT
  2. INTO mod_xgallery_categories(parent_id,
  3. name, description) VALUES('$parentID',(SELECT level
  4. FROM mod_xgallery_categories
  5. WHERE cat_id = $parentID) + 1,'$name','$description')"


i to +1 wywala mi cale zapytanie - szukalem w dokumentacji ale nei wiem... jak dodac jedynke do tego selecta ?

To może tak?

  1. INSERT
  2. INTO mod_xgallery_categories(parent_id,
  3. name, description) VALUES('$parentID',(SELECT level + 1
  4. FROM mod_xgallery_categories
  5. WHERE cat_id = $parentID) ,'$name','$description')"
Yacho
OK terz mam takie cos :
  1. INSERT
  2. INTO mod_xgallery_categories(parent_id,
  3. level,
  4. name, description) VALUES('39',(SELECT level + 1
  5. FROM mod_xgallery_categories
  6. WHERE cat_id = 0 LIMIT 1) ,'aaa','aaa')


i wywala :
Cytat
#1093 - You can't specify target table 'mod_xgallery_categories' for update in FROM clause


Czyli nie da sie tego zrealizowac w 1 zapytaniu ?
tort
To może tak:
  1. INSERT
  2. INTO mod_xgallery_categories(parent_id,
  3. level, name, description)
  4. SELECT 39, level + 1, 'aaa', 'aaa'
  5. FROM mod_xgallery_categories
  6. WHERE cat_id = 0 LIMIT 1

lub tak:
  1. INSERT
  2. INTO mod_xgallery_categories(parent_id,
  3. level, name, description)
  4. SELECT 39, level + 1, 'aaa', 'aaa'
  5. FROM mod_xgallery_categories
  6. WHERE id =
  7. (SELECT id
  8. FROM mod_xgallery_categories
  9. WHERE cat_id =0 LIMIT 1)


A w najgorszym razie możesz zastosować taki trick:
  1. SELECT @val=level + 1
  2. FROM mod_xgallery_categories
  3. WHERE cat_id = 0 LIMIT 1;
  4. INSERT
  5. INTO mod_xgallery_categories(parent_id,
  6. level, name, description)
  7. VALUES (39, @val, 'aaa', 'aaa');

Czyli najpierw przypisujesz do zmiennej systemowej (MySQLa oczywiście) wartość level+1, a potem ją umieszczasz w tabeli razem z innymi wartościami. I to wszystko możesz potraktowac jako jedno zapytanie, bo MySQL pozwala na takie rzeczy.
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.