Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL] Mieszane sortowanie, 123123123
Daimos
post
Post #1





Grupa: Zarejestrowani
Postów: 1 319
Pomógł: 118
Dołączył: 26.11.2003
Skąd: Lublin

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


Witam
Może ktoś z Was, zna sposób na posortowanie danych, hmm na przemian, miks taki (IMG:style_emoticons/default/winksmiley.jpg) z poziomu MySQLa
chodzi mi o takie coś
tabela
NUMERKI
1
1
1
2
2
2
2
2
3
3
3
...

Chodzi mi o wynik mieszany, czyli
1
2
3
1
2
3
1
2
3
itd

Sprawa wydaje się nieskomplikowana, ale nie jest tak kolorowo, bez kilku podzapytań chyba się nie obędzie, może ktoś ma pomysł na jakieś zapytanie/procedurę?

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





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Mnie udało się to zrobić w taki sposób
  1. SET @num=1, @prev=0;
  2. SELECT
  3. a.*,
  4. IF(@prev<foo, @num:=1, @num:=@num+1),
  5. @num AS num,
  6. IF(@prev<foo, @prev:=foo, NULL)
  7. FROM
  8. (SELECT * FROM test ORDER BY foo)
  9. a ORDER BY num, foo


Jak widzisz, potrzeba ci będzie w bazie dodatkowa kolumna. Dzięki temu nie będzie już takiego zapytanie tylko zwykle
  1. ORDER BY dodatkowa_kolumna, numery


Jak to działa:
Chodzi o ponumerowanie kolejny wystąpień tych samych numerów. Tak więc wyglądałoby to tak
numer | kolejnosc
1 | 1
1 | 2
1 | 3
1 | 4
2 | 1
2 | 2
3 | 1
3 | 2
4 | 1

teraz jak posortujesz wzgledem "kolejnosc, numer" wyjdzie ci coś takiego

numer | kolejnosc
1 | 1
2 | 1
3 | 1
4 | 1
1 | 2
2 | 2
3 | 2
1 | 3
1 | 4


Ten post edytował wookieb 29.08.2009, 17:18:38
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: 6.10.2025 - 14:37