![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 50 Pomógł: 1 Dołączył: 28.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Od kilku godzin męczę się nad pewnym zagadnieniem, przeszukałem forum i google i nic nie umiem znaleźć - może nie umiem do końca sprecyzować zapytani. Ale przechodząc do sedna sprawy. Potrzebuje wyciągnąć z bazy wynik najbliższy podanej wartości liczbowej. Przykładowo mam tabele a w niej jedno z pól to średnia (typ pola DOUBLE) i podając jakąś liczbę zwróci mi najbliższy wynik z bazy. Mógłbym się tym zając poprzez php, ale jednak w zamierzeniu tabela ma mieć mnóstwo danych, wiec wyciąganie jej całej jest mało optymalne. |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 41 Pomógł: 8 Dołączył: 13.09.2010 Ostrzeżenie: (0%) ![]() ![]() |
Możesz wziąć jeden rekord większy od zadanej liczy i jeden mniejszy (2 zapytania) a w php sprawdzisz która liczba jest bliższa.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
To powinno zwrócić dwa najbliższe rekordy (ewentualnie jeden), jeden większy, jeden mniejszy od podanej wartości. Teraz po stronie PHP wystarczy odrzucić tego, który jest dalej. W sumie pewnie można by i to bez jakiegoś większego problemu zrobić po stronie bazy obliczając odległość (dodać ABS(col_name - ?) AS distance w SELECT każdego zapytania) i zwrócić tego, który ma wartość distance mniejszą. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 50 Pomógł: 1 Dołączył: 28.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
Kurde chłopaki wielkie dzięki, głowiłem się nad tym tyle godzin, a odpowiedź brzmi tak banalnie, dosłownie porażka ^^
Jeszcze raz wielkie dzięki =) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 22:18 |