[mysql] zapytanie z warunkiem, sortowanie Zobacz wiadomości
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
sd - 03-02-2006 09:53 [mysql] zapytanie z warunkiem, sortowanie
witam
w tabeli jest kolumna kat_sortowanie, sa tam wartosc 0 lub 1 oprocz tego sa tez kolumny data oraz data_wydarzenia jak teraz ulozyc zapytanie zeby w zaleznosci od wartosci w kolumnie kat_sortowanie byly sortowane odpowiednio dane wedlug daty albo wedlug daty wydarzenia?
napisalem cos takiego ale nie za bardzo
SELECT * FROM news WHERE kat_id = 8 ORDER BY IF(kat_sortowanie = 0, news_data, news_data_wydarzenia) DESC LIMIT 15
moglbym to zrobic inaczej, np wstawiajac nazwe kolumny zamiast 0 lub 1, ale chcialbym nauczyc sie tez bardziej skomplikowanych rzeczy :)
pozdrawiam
HERAKLES - 03-02-2006 09:53
sd wrote:
> witam > > w tabeli jest kolumna kat_sortowanie, sa tam wartosc 0 lub 1 > oprocz tego sa tez kolumny data oraz data_wydarzenia > jak teraz ulozyc zapytanie zeby w zaleznosci od wartosci w kolumnie > kat_sortowanie byly sortowane odpowiednio dane wedlug daty albo wedlug > daty wydarzenia? > > > napisalem cos takiego ale nie za bardzo > > SELECT * FROM news WHERE kat_id = 8 ORDER BY IF(kat_sortowanie = 0, > news_data, news_data_wydarzenia) DESC LIMIT 15 > > moglbym to zrobic inaczej, np wstawiajac nazwe kolumny zamiast 0 lub 1, > ale chcialbym nauczyc sie tez bardziej skomplikowanych rzeczy :) > > pozdrawiam no to proszę na przykładzie postgresa:
order by substring(opikar from '[^[:digit:]]*'), substring(opikar from '[[:digit:]]+')::integer, opikar;
posortuje tak:
n1 n2 n10 nb1 x20 x33 x200
a ze zwykłym sortowaniem zrobi tak:
n1 n10 n2 nb1 x20 x200 x33,
aha i warto założyć indeks na tabeli: (substring(opikar from '[^[:digit:]]*'), substring(opikar from '[[:digit:]]+')::integer, opikar)
nie jest to doskonałe rozwiązanie, i szczerze przyznam, że w chwili wolnego czasu popracuje nad lepszym.
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona