Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: ORDER BY - najbliższa wartość zmiennej
Forum PHP.pl > Forum > Bazy danych > MySQL
netvalue
Witam,

Panowie, chec ułożyć zapytanie typu



SELECT * FROM tabele ORDER BY .... i tutaj żeby było warunkiem najbliża wartość pola tabeli NUMER względem zmiennej ZMIENNA

czyli mam zmieną 5.4554

a w tabela

id | NUMER
1 | 1.233
2 | 4.233
3 | 5.123
4 | 1.146

chcialbym uzyskać z zapytania kolejność

5.123
4.233
1.146
1.233
wiiir
ale jeszcze musisz miec warunek where, samo order by ci nie wystarczy
netvalue
nie rozumiem do czego mi ten warunek ?
wiiir
jezeli twoja zmienna bedzie wynosic 4.5000

to jak chcesz miec wynik?

order sortuje cały zasób danych wiec masz sortowanie asc lub desc i w tym wypadku zawsze bedzie pierwsze 1.233 lub 5.123

A moze zalezy ci na znalezieniu najblizszej wartosci twojej zmiennej??
netvalue
i tak tez chcę wyniku miec malejace wartosci od mojego float 5.4554

5.123
4.233
1.146
1.233

robiłem

select * from customer order by abs(`rate` - 5.4554) asc

ale jakos dziwnie zwraca bo przy pełnej tabeli regordów np wartość 2.341 pred wartościa 4.233
wiiir
Takim zapytaniem nigdy nie bedziesz mial malejacych wartosci

przykład: masz dane

1 1.234
2 2.343
3 4.111
4 4.555

Twoja zmienna: 3
Twoje zapytanie:
  1. SELECT * FROM customer ORDER BY abs(`rate` - 3) ASC

Wynik:
2 2.343
3 4.111
4 4.555
1 1.234

Ty orderujesz po roznicy nie po wartosci
netvalue
no własnie , a jak mam w kolejności warotści to zestawić ?
wiiir
Nie ustawisz.
Jezeli twoja zemienna to 3 i najbliższą wartościa jest 3.1 a w kolumnie masz jeszcze wartosc 1 i 4 to teraz w zaleznosci jak bedziesz sortować zawsze pierwsze bedzie albo 1 albo 4.
Zakumałes?

zebys miał wynik
3.1
1

To musisz wykluczyć 4 ze zbioru do sortowania.
netvalue
ehh no wielki jednak jestes wink.gif

  1. SELECT * FROM customer_trader WHERE rate > 1.3444 ORDER BY abs(`rate` - 1.3444) ASC


i wszystko jest ok smile.gif

dzieki wielkie smile.gif
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.