Skocz do zawartości

Niestandardowe zapytanie do MySQL


oloksyk

Rekomendowane odpowiedzi

Mam dane w DB gdzie w jednej kolumnie są wartości liczbowe np. 25, 30, 35, 40, 15, 20, 50.

Chciałbym zrobić zapytanie i tak posortować wyniki aby były jak najbardziej zbliżone do szukanej liczby, np szukam wartości 35 i zwraca mi w takiej kolejności:
35, 30, 40, 25, 20, 50, 15

Jest to możliwe w MySQL?

Uroczystości rodzinne

Pięknie wykonane Zaproszenia ślubne ręcznie robione w rewelacyjnych cenach

Odnośnik do komentarza
Udostępnij na innych stronach

44 minuty temu, oloksyk napisał:

np szukam wartości 35 i zwraca mi w takiej kolejności:
35, 30, 40, 25, 20, 50, 15

A jaka jest w tym logika, bo nie rozumiem  :co:
 

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Widać autor topica ma to juz w (|) bo nie raczy się odezwać  <_<

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

3 godziny temu, Presta napisał:

Ale ta kolejność nie posiada żadnej sprecyzowanej reguły.

 

Jak nie ma jak ma. Autor tematu napisał "najbardziej zbliżone do szukanej liczby" i taka jest właśnie kolejność.

 

Liczba szukana odjąć znaleziona wartość równa się sort (wartość absolutna). W PHP wyglądało by to mniej więcej tak:

 

$sort = abs($liczbaSzukana - $znalezionaWartosc);

 

Edit: Może coś w tym stylu:

 

SELECT q.id,
       q.znalezionaWartosc,
       35 - q.znalezionaWartosc AS difference
  FROM TABLE q
ORDER BY ABS(difference) DESC

 

DesignBox - projektowanie stron Konin w najlepszym wydaniu. Ponadto tworzenie sklepów internetowych, migracje, optymalizacja, usługi graficzne. Działalność prowadzona nieprzerwanie od ponad 9 lat. Solidnie i w normalnej cenie.

Stabilny hosting w normalnej cenie i tanie odnowienie domen *.pl - SeoHost

Odnośnik do komentarza
Udostępnij na innych stronach

1 godzinę temu, atp napisał:

 

Jak nie ma jak ma. Autor tematu napisał "najbardziej zbliżone do szukanej liczby" i taka jest właśnie kolejność.

 

Liczba szukana odjąć znaleziona wartość równa się sort (wartość absolutna). W PHP wyglądało by to mniej więcej tak:

 


$sort = abs($liczbaSzukana - $znalezionaWartosc);

 

Edit: Może coś w tym stylu:

 


SELECT q.id,
       q.znalezionaWartosc,
       35 - q.znalezionaWartosc AS difference
  FROM TABLE q
ORDER BY ABS(difference) DESC

 

BINGO !!! Tylko kolejność ASC.

Dziękuję bardzo za pomoc.

 

image.thumb.png.2bf4f405b5a1c5ec7b366fea2382b240.png

 

Uroczystości rodzinne

Pięknie wykonane Zaproszenia ślubne ręcznie robione w rewelacyjnych cenach

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności