Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> podzapytanie - drobny problem :), dodawanie integera do wyniku selecta ?
Yacho
post
Post #1





Grupa: Zarejestrowani
Postów: 148
Pomógł: 0
Dołączył: 16.06.2003

Ostrzeżenie: (0%)
-----


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 ?
Go to the top of the page
+Quote Post
spenalzo
post
Post #2





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

Ostrzeżenie: (0%)
-----


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')"
Go to the top of the page
+Quote Post
Yacho
post
Post #3





Grupa: Zarejestrowani
Postów: 148
Pomógł: 0
Dołączył: 16.06.2003

Ostrzeżenie: (0%)
-----


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 ?
Go to the top of the page
+Quote Post
tort
post
Post #4





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 15.09.2005
Skąd: Lublin

Ostrzeżenie: (0%)
-----


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.

Ten post edytował tort 10.02.2006, 23:46:17
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 11:44