Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [sql] INSERT INTO `pole`=MIN(`pole`)
cadavre
post
Post #1





Grupa: Zarejestrowani
Postów: 472
Pomógł: 7
Dołączył: 7.12.2005
Skąd: Gliwice

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


Witam!
Mam takie oto zapytanie:
  1. INSERT INTO `eventy` SET `order`= (`order`)-1

Niestety jest ono wykonywane z timeoutem (100% CPU usage Apache'a).

Jakie zapytanie wsadzić by w pole `order` dodaj wartość o jeden mniejszą od `order`?

How to do it? rolleyes.gif

------------------------------------------------------------------------------------------------------
EDIT:
Mam tyle:
  1. INSERT INTO `eventy` ( `order` )
  2. SELECT MIN( `order` ) -1
  3. FROM `eventy`
Jednak potrzebuję dodać nie tylko `order` i nie tylko z SELECT'a dane. Coś a'la:
  1. INSERT INTO `eventy` ( `order`,`pole_dwa` )
  2. VALUES ( (SELECT MIN( `order` ) -1
  3. FROM `eventy`),'wartość_pola_2' )


Ten post edytował cadavre 11.09.2006, 17:06:13


--------------------
Silesian PHP User Group - www.spug.pl
Symfony2, OAuth2, budowanie API - masz pytania? Pisz!
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
SongoQ
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


Mozesz w taki sposob. Bo wydaje mi sie ze bezposrednio z tej tabeli nie wstawi i dlatego wystepuje blad.

  1. SET @a = (SELECT MIN( `order` ) -1
  2. FROM `eventy`); INSERT INTO `eventy` ( `order`,`pole_dwa` )
  3. VALUES ( @a,'wartość_pola_2' )


--------------------
Go to the top of the page
+Quote Post
cadavre
post
Post #3





Grupa: Zarejestrowani
Postów: 472
Pomógł: 7
Dołączył: 7.12.2005
Skąd: Gliwice

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


Jak najbardziej satysfakcjonuje mnie ta odpowiedź. smile.gif Dzięki wielkie!

Mam jeszcze jedno pytanko dot. SQL: jak zamienić ze sobą dwie kolejne wartości liczbowe (np. 99 i 98)? Jak wiadomo gdy 98 UPDATE'em zrobimy 99 to wtedy będziemy mieć dwie te same wartości 99 i wtedy nie będzie dało się zmienić 99 w 98 bo zmieni obie wartości. Niestety tabela ma tylko wiersz `order` - nie ma żadnych unique'ów z np. ID'ami.

Ten post edytował cadavre 11.09.2006, 18:03:43


--------------------
Silesian PHP User Group - www.spug.pl
Symfony2, OAuth2, budowanie API - masz pytania? Pisz!
Go to the top of the page
+Quote Post
harryk
post
Post #4





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 20.04.2005

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


Zamień najpierw jedną wartość (np. 99) na taką, która w bazie nie istnieje (przykładowo: 999), następnie zamień wartość 98 na 99, a wartość 999 na 98.

Ten post edytował harryk 17.09.2006, 15:57:35
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 19.08.2025 - 09:17