Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Najbliższy wynik
Forum PHP.pl > Forum > Bazy danych > MySQL
Shinji
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.
tr@k
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.
Crozin
  1. (SELECT ... FROM ... WHERE col_name >= ? ORDER BY col_name ASC LIMIT 1)
  2. UNION
  3. (SELECT ... FROM ... WHERE col_name <= ? ORDER BY col_name DESC LIMIT 1)
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ą.
Shinji
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 =)
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.