Skocz do zawartości

sortowanie naprzemienne


Chell

Rekomendowane odpowiedzi

  • Filar Społeczności

siema,
mam taką tabelkę:
 

id|nazwa   |typ
--+--------+-------
1 |jabłko  |owoc
2 |śliwka  |owoc
3 |wiśnia  |owoc
4 |ziemniak|warzywo
5 |batat   |warzywo
6 |marchew |warzywo

chcę zrobić zapytanie, które wybierze mi naprzemiennie owoce i warzywa (także jabłko, ziemniak, śliwka, batat, wiśnia, marchew). są w ogóle takie cuda? (dodam, że owoc, warzywo to nie jedyne wartości, mogą być najróżniejsze - chciałbym je też brać pod uwagę)
w idealnym świecie dałoby się to zrealizować po ludzki w sqlalchemy :red_bandana:

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy

Jedyne co mi wpadło do głowy, to zrobić zapytanie które zwraca co drugi rekord i wtedy union select z zapytaniem przeciwnym.

Ewentualnie zapytanie do którego doklejasz numer rzędu (nie id) i robisz jakiś concat zależnie od modulo i potem z tego kolejny select i posortować po tym concat. Ale ogólnie to będzie wolne, tak czy siak.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy

@Chell: https://stackoverflow.com/questions/53957524/mysql-how-to-sort-rows-to-appear-like-this-e-g-1-2-1-2

Generalnie szukałem po "a b a b sorting" oraz "alternate sorting" i jest parę propozycji.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Filar Społeczności
1 minutę temu, gnysek napisał:

@Chell: https://stackoverflow.com/questions/53957524/mysql-how-to-sort-rows-to-appear-like-this-e-g-1-2-1-2

Generalnie szukałem po "a b a b sorting" oraz "alternate sorting" i jest parę propozycji.

oo, dokładnie o to chodziło. próbowałem szukać "order by alternately", ale jedyne sensownego co znalazłem to https://stackoverflow.com/questions/18862522/mysql-order-by-alternate-values, a to kobyła większa niż to jest tego warte. wieczorkiem zaimplementuję, dzięki!

Odnośnik do komentarza
Udostępnij na innych stronach

  • Filar Społeczności

dobra, nie wytrzymałem i już zaimplementowałem, śmiga jak marzenie:

query = self._session.query(Summoner).filter(or_(
        Summoner.account_id == None,
        Summoner.modified_at < ttl
    )).order_by(
        over(
            func.row_number(),
            Summoner.region,
            (Summoner.rank_id, Summoner.region)
        ),
        Summoner.region
    )

dzięki!

Odnośnik do komentarza
Udostępnij na innych stronach

  • Chell zmienił(a) tytuł na sortowanie naprzemienne

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...