netvalue
7.06.2013, 19:45:59
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
7.06.2013, 20:14:04
ale jeszcze musisz miec warunek where, samo order by ci nie wystarczy
netvalue
7.06.2013, 20:14:43
nie rozumiem do czego mi ten warunek ?
wiiir
7.06.2013, 20:20:32
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
7.06.2013, 20:27:05
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
7.06.2013, 20:38:15
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:
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
7.06.2013, 20:43:42
no własnie , a jak mam w kolejności warotści to zestawić ?
wiiir
7.06.2013, 20:49:21
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
7.06.2013, 20:53:04
ehh no wielki jednak jestes
SELECT * FROM customer_trader WHERE rate > 1.3444 ORDER BY abs(`rate` - 1.3444) ASC
i wszystko jest ok

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