zibra
18.07.2006, 15:13:57
Witam!
Mam tabelę mysql z kolumnami, w których mam jakieś liczby. Chciałbm posortować dane pobierane z tabeli np. wdług sumy / różnicy tych pól... Jak to zrobić?
np. mam pola: p1 p2 p3 p4
i chcę żeby dane pobierane z tabeli były sortowane rosnąco według wyniku działania: p1 + p2 - p3 - p4
NuLL
18.07.2006, 17:00:55
SELECT (t.p1+t.p2-t.p3-t.p4) AS klucz FROM tabela t ORDER BY klucz DESC
zibra
18.07.2006, 17:57:43
Chyba mi to nie działa... Tzn. nie sortuje jak należy.
To oznacza literka t. ? Czy masz jakiś tutek o tym?
bela
18.07.2006, 22:01:02
T to alias dla tabela
FROM tabela t
zibra
19.07.2006, 10:12:10
Działa, bo sprawdziłem w phpmyadminie co było nie tak i problem teraz polega na tym, że jesli któreś z tych pól ma wartość NULL to końcowy wynik obliczeń jest też NULL. Można jakoś poprawić ten kod tak żeby dla pól, które są puste przyjmował wartość 0? Nie za bardzo mogę wstawić wartość 0 do tych pól bo troche mi to zaburzy pozostałą część skryptu...
nospor
19.07.2006, 10:13:07
zajrzyj do manuala i poczytaj o IFNULL
zibra
19.07.2006, 10:27:25
poczytałem... ale nie wiem jak to tu dołączyć... :/
nospor
19.07.2006, 11:01:23
mowiac poczytaj mialem na mysli: poczytaj i sprobuj sam cos zrobic...
SELECT (ifnull(t.p1,0)+ifnull(t.p2,0)-ifnull(t.p3,0)-ifnull(t.p4,0)) AS klucz FROM tabela t ORDER BY klucz DESC
zibra
19.07.2006, 15:54:41
Dzięki
Kombinowałem ale mój błąd polegał na tym że robiłem chyba t.ifnull(p1,0)...
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.