Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: własna kolejność ORDER BY
Forum PHP.pl > Forum > Bazy danych > PostgreSQL
php programmer
Witam

Czy da się zrobić ORDER BY według własnej funkcji porównującej?
Sedziwoj
Powiem tak, można. Ale jak to nie powiem, bo nie robiłem tego, do tego jest to zależne od konkretnego przypadku co się chce zrobić.
DeyV
Powiedz dokładniej, co chcesz osiągnąć - a pokażemy Ci jak smile.gif
SongoQ
@php programmer Chcesz tak zastosowac ORDER BY "mojaProcedura"() ?
php programmer
Mam tabele z kolumną idfirmy z tym, że narzucone jest,
aby firmy pojawiały się w określonej kolejnośći np

2
1
3
4
8
5
6
0
7
9

Dodam że w tym ciągu nie ma żadnego logicznego uporządkowania
Normalnie to bym stworzył drugą tabelę z firmami z dodatkową kolumną
do sortowania, ale moge jedynie czytać z bazy, nie mam praw zapisu
SongoQ
Jesli mozesz to utworz wlasna funkcje sortujaca jesli masz mozliwosc zapisania jakiejsc funkcji nie koniecznie w tym schemacie. Nie wiem czy jest mozliwosc w PG podania jak dane pole ma byc sortowane, ale to musisz pogooglowac mozliwe ze cos takiego w pg jest zaimplementowane.
DeyV
Jeśli masz PG w wersji 8.2 istnieje jeszcze inna możliwość.


Od tej wersji dostępna jest nowa funkcjonalność - podawanie list (VALUES) do zapytań.

Dzięki temu łatwo można zrobić coś takiego:

  1. SELECT
  2. x.id, x.liczba, k.kod
  3. FROM x JOIN ( VALUES (1, 'closed'), (2, 'new'), (3, 'open') ) AS k (id, kod) ON ( x.liczba = k.id )
  4. ORDER BY k.kod


A wtedy zrobienie takiego sortowania jak chcesz, staje się banalne.

Więcej na ten temat:
http://www.depesz.com/index.php/2006/12/09...esie-82-values/
AcidBurnt
na 99% da się napisac własne reguły sortowania, kiedys tego szukałem, i znalazłem gdzies opis dokladny, nie moge teraz tego znalesc niestety
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.