Sign in to follow this  
oloksyk

Niestandardowe zapytanie do MySQL

Recommended Posts

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

Share this post


Link to post
Share on other sites
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
- Full Stack Developer - :chatownik:

+ Ciekawy VLOG o Dubaju 

Share this post


Link to post
Share on other sites

HTTP 200 usługi IT - Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL
- Full Stack Developer - :chatownik:

+ Ciekawy VLOG o Dubaju 

Share this post


Link to post
Share on other sites

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


Wdrożenia sklepów Prestashop: www.selljus.pl

Share this post


Link to post
Share on other sites

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
- Full Stack Developer - :chatownik:

+ Ciekawy VLOG o Dubaju 

Share this post


Link to post
Share on other sites
Posted (edited)
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

 

Edited by atp
  • Thanks 1

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

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

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.