Dzień dobry, w jaki sposób mogę posortować dane z tabel po tego typu wartościach? na przykład 10<200, 200<250>220
SELECT SUM(FAKTURY.BRUTTO), FAKTURY.MOUTH, table1.name, table1.group, MIASTA.SIZE
FROM table1
INNER JOIN FAKTURY
ON FAKTURY.user_id = table1.id
INNER JOIN MIASTA
ON MIASTA.id = table1.city_id
WHERE FAKTURY.MOUTH = 'WRZESIEŃ'
GROUP BY table1.group
ORDER BY SIGN(MIASTA.SIZE) ASC
gdzie MIASTA.SIZE mają właśnie wartości jak w temacie.
Prosta odpowiedź: nie specjalnie się da.
Dłuższa odpowiedź: da się, ale musisz je sprowadzić do jakiegoś wspólnego i porównywalnego formatu, np. enuma [small, medium, big]
i wtedy sortować.
Są to wartości określające wielkość miast, mam posortować to po właśnie tych wielkościach.
ale to NIE SĄ sortowalne wartości! Np. 10<99 będzie za 100<199. Musisz to zamienić na coś co się da sortować, np. liczb całkowite od 1 do x, gdzie x to liczba różnych "wielkości" miast. Możesz to zrobić albo dodając dodatkową kolumnę w tabeli i ją wypełniając odpowiednio (np. trigger) albo "w locie" tak
...
ORDER BY
case
when MIASTA.SIZE = '10<200' then 1
when MIASTA.SIZE = '200<250>220' then 2
....
else 999
end
abrakadaber napisał(a):
ale to NIE SĄ sortowalne wartości! Np. 10<99 będzie za 100<199. Musisz to zamienić na coś co się da sortować, np. liczb całkowite od 1 do x, gdzie x to liczba różnych "wielkości" miast. Możesz to zrobić albo dodając dodatkową kolumnę w tabeli i ją wypełniając odpowiednio (np. trigger) albo "w locie" tak
... ORDER BY case when MIASTA.SIZE = '10<200' then 1 when MIASTA.SIZE = '200<250>220' then 2 .... else 999 end
Dziękuje to rozwiązuje mój problem i poszerza wiedzę.
dzięki za informacje