![]() |
![]() ![]() |
![]() |
![]()
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. |
|
|
![]()
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ć.
-------------------- |
|
|
![]()
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 |
|
|
![]()
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... |
|
|
![]()
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
![]() -------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 12.06.2025 - 19:44 |