Sortowanie wg. pól kalkulowanych

0

Witam,
mam w ds pola kalkulowane, a potrzebuję sortować wyniki wg tych pól - jak to zrobić ? (aplikacja jest pisana na kilka silników BD i ze względu na różnice między BD obliczenia są wykonywane po stronie aplikacji)

0

order by <numer_pola>
np. select max(a), b from c group by b order by 1

albo

select max(a) as max_a, b from c group by b order by max_a

albo

select max(a), b from c group by b order by max(a)

0

ze względu na różnice między BD obliczenia są wykonywane po stronie aplikacji

ale nieważne

Pomyślałem że może zapytanie zwróci wszystkie rekordy posortowane wg. wybranej przez użytkownika kolejności, natomiast wyświetlone zostaną tylko te które spełniają wybrane warunki.
Jak po stronie DataSource / DataQuery lub Grida usunąć wybrane rekordy niespełniające warunków ?
Pzdr

0

po stronie aplikacji zwyczajnie je posortuj, quicksort, heapsort, cokolwiek. sprawdzanie warunków - pętla for po wszystkich rekordach i na każdym sprawdzenie, czy odpowiednie pola spełniają odpowiednie założenia.

IMHO pomysł na przesunięcie wszystkich "obliczeń" na aplikację jest kiepski. jak będziesz mieć kilkaset tysięcy czy kilkadziesiąt milionów rekordów i dalej będziesz "ręcznie" w pętli sprawdzał warunki, to aplikacja będzie zajmować olbrzymią ilość pamięci, będzie kilka minut ściągać dane i potem kolejne kilka sprawdzać warunki.

SQL to standard i jeśli nie będziesz używać składni/poleceń specyficznych dla konkretnej bazy danych, to zapytanie wykona się prawidłowo na każdej bazie obsługującej ten język. przypadkiem order by i where są w standardzie.

0

Czasem zbudowanie spójnego interfejsu (obiektów bazy danych) dla różnych silników jest wybitnie nieporęczne, a operacje filtrowania po stronie klienta zdają się być jedynym rozwiązaniem - faktycznie niewydajnym.

http://www.microolap.com/products/connectivity/postgresdac/help/TPSQLDataset/Events/OnFilterRecord.htm

Problem jest rozwiązany, jeśli podpowiesz mi jak (jaką funkcją) w silniku INTERBASE policzyć różnicę między datami.
Pozdrawiam

0

http://www.ibphoenix.com/main.nfs?a=ibphoenix&s=1154534295:6&page=ibp_60_sql_date_ds, akapit "Floating point vs. Exact Numeric", jak również całe http://www.ibphoenix.com/main.nfs?a=ibphoenix&s=1220273245:466175&page=ibp_60_sql_date_fs.
bardzo często nie potrzebujesz odejmować dat, wystarczy odpowiednio użyć between albo and.

a tak z ciekawości: jakim cudem duży problem przeliczania po stronie programu jest powodowany przez banalny problem odejmowania dat?

1 użytkowników online, w tym zalogowanych: 0, gości: 1