Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> ORDER BY zmiana wartości w kolumnie
Krzysztofik
post 20.08.2012, 08:28:18
Post #1





Grupa: Zarejestrowani
Postów: 16
Pomógł: 1
Dołączył: 4.03.2009

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


Witam,

mam problem z sortowaniem wyników w dość specyficzny sposób. Mam tabelę, z polem `cat`, które wskazuje na kategorię wpisu i `id` - id wpisu.

Chciałbym, żeby ułożyć je wg. tego, żeby obok siebie NIE było dwóch wpisów tej samej kategorii, a po sprawdzeniu tego warunku(nawet jeśli nie może być spełniony bo brakuje wpisów) wg id DESC. Czyli potrzebuję czegoś takiego:

ORDER BY {tutaj jakiś warunek o kategoriach}, id DESC;

Mam nadzieję, że w miarę sensownie wytłumaczyłem, jakby co mogę się rozpisać bardziej.

Z góry dzięki za pomoc, bo na razie szukam i czytam i nie mogę znaleźć rozwiązania.
Go to the top of the page
+Quote Post
Indeo
post 23.08.2012, 07:42:41
Post #2





Grupa: Zarejestrowani
Postów: 295
Pomógł: 7
Dołączył: 26.03.2004
Skąd: Opole

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


Wrzuć przykładową tabelkę z danymi i tabelkę z oczekiwanym wynikiem, bo cięzko zrozumieć.


--------------------
Go to the top of the page
+Quote Post
Krzysztofik
post 23.08.2012, 08:39:20
Post #3





Grupa: Zarejestrowani
Postów: 16
Pomógł: 1
Dołączył: 4.03.2009

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


rekordy:

id link cat
1 asdqwe 2
2 qweqwe 2
3 qweasd 2
4 zxcasd 1
5 asdqwe 2
6 ssssss 2
7 aaaaaa 1
8 ffffff 1
9 gggggg 1
10 hhhhhh 1

Celem jest żeby wyświetliło w tej kolejności(wg. id):
10, 6, 9, 5, 8, 3, 7, 2, 4, 1

Czyli, krótko ujmując, starało się niejako PRZEPLATAĆ kategorie.


EDIT: Aha, tak samo ma działać przy wielu kategoriach - następny rekord ma być taki, że ma inną kategorię niż poprzedni i jak najwyższe id, chyba że już takowych nie ma, wtedy te same kategorie mogą być obok siebie.

Ten post edytował Krzysztofik 23.08.2012, 08:42:55
Go to the top of the page
+Quote Post
Sephirus
post 23.08.2012, 08:59:25
Post #4





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


IMHO - nie wykonalne z poziomu MySQL bez tworzenia pokićkanej procedury przelatującej po wszystkich wynikach... Najprościej - pobierz posortowane po ID samym i przerób w PHP - ja bym tak zrobił.


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post
Indeo
post 23.08.2012, 09:22:55
Post #5





Grupa: Zarejestrowani
Postów: 295
Pomógł: 7
Dołączył: 26.03.2004
Skąd: Opole

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


Sephirus ma rację. Same wyniki zapytania nie mają pojęcia o tym co jest nad lub pod nimi. Generalnie mimo, że chodzi Ci o sortowanie to sama idea sortowania jako takiego jest odwrotna stąd problem wink.gif



--------------------
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 Wersja Lo-Fi Aktualny czas: 12.06.2025 - 19:44