Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Jak wstawić numer pozycji po sortowaniu ?
sbx
post
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 22.09.2006

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


np. mamy dwie kolumny (name, pos) i po wykonaniu:
  1. SELECT * FROM tabela ORDER BY name DESC;

chciałbym wstawić do pos="numerowy pozycji którą zajmuje po sortowaniu"

Chodzi mi o to by to zrobić wydajnie, najlepiej w jednym zapytaniu, czy to możliwe, ma ktoś jakiś pomysł ?

Pozdrawiam

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
sbx
post
Post #2





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 22.09.2006

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


hahahhahahaha ten błąd ubawił mnie dzisiaj (IMG:style_emoticons/default/smile.gif)

pomijając tą "literówkę" (IMG:style_emoticons/default/winksmiley.jpg) i tak jestem zdziwiony ponieważ,

przykład poniżej wyświetla poprawny wynik w PHP, lecz nie zapisuje go w DB:

  1. mysql_query("SET @i=0;");
  2. $result = mysql_query("SELECT @i:=@i+1 rank, score from players ORDER BY score DESC;");
  3. while ($row = mysql_fetch_assoc($result)) {
  4. print_r($row);
  5. echo "<br/>";
  6. }

...a rozumiem że zapytanie powinno zapisać wartość @i do kolumny rank, tak ?



oczywiście to nie problem bo działa przez update:
  1. mysql_query("SET @i=0;");
  2. mysql_query("UPDATE players SET rank=(@i:=@i+1) ORDER BY score DESC;");



lecz analogicznie do poprzedniego to tez powinno działać lecz inkrementacja nie działa, dlaczego ?
  1. mysql_query("UPDATE players SET rank=(if(@i, @i:=@i+1, @i:=9)) ORDER BY score DESC;");




To żaden problem, ale może komuś będzie się chciało odpowiedzieć, dlaczego dwa wymienione przykłady nie działają.

Pozdrawiam. (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Posty w temacie


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: 5.10.2025 - 03:46