Sortowanie wyników w MySQL


(northwest) #1

Witam serdecznie,

mam takie zapytanie: SELECT * FROM produkty WHERE enable = '1' and (bf_id = '325436467546754765' or bf_id = '1508 ' or bf_id = '1504 ' or bf_id = '1227 ' or bf_id = '71 ' or bf_id = '70 ' or bf_id = '935 ' or bf_id = '719 ' or bf_id = '726 ' or bf_id = '1112 ' or bf_id = '567 ' or bf_id = '1260 ' or bf_id = '1505 ' or bf_id = '1 ' or bf_id = '455 ' or bf_id = '1074 ' or bf_id = '895 ' or bf_id = '76 ' or bf_id = '100 ' or bf_id = '721 ' or bf_id = '893 ' or bf_id = '1004 ' or bf_id = '1236 ' or bf_id = '209 ' or bf_id = '510 ' or bf_id = '616 ' or bf_id = '1511 ' or bf_id = '1514 ' or bf_id = '2018 ' or bf_id = '1503 ' or bf_id = '1154 ' or bf_id = '855 ' or bf_id = '705 ' or bf_id = '29 ' or bf_id = '1321 ' )

i chciałbym otrzymać listę wyników w takiej kolejności jakie mam id.... czy 325436467546754765, 1508, 1504 itp...

MySQL zwraca mi natomiast wyniki posortowane od 1 wzwyż... :frowning: Jak zrobić żeby zachował kolejność z WHERE?

Northwest


(Kawior1+Dobreprogramy) #2

Takie coś jest niemożliwe.


(ra-v) #3

A czemu muszą być posortowane wg tego co napisałeś i co to bf_id?


(Aglasek) #4

Można dodać sobie kolumnę w tabeli i tam każdemu bf_id nadać odpowiednią liczbę np.

bf_id - ‘325436467546754765’ miało by numer 1

bf_id - '1508 ’ miało by numer 2

itd.

wtedy tylko “ORDER BY number” i ewentualnie można dać ASC lub DESC w zależności czy rosnąco czy malejąco.

Najlepiej jakby kolumna “number” była jako INT bo jeśli dasz np. VARCHAR to Ci bierze pod uwagę jako osbone znaki jeśli dobrze pamiętam.

Tylko pytanie czy możesz to w taki sposób zrobić na tzw. metodę “na sztywno” ;).


(Grzelix) #5

ogólnie dziwnie to wygląda, ale jak już tak chcesz to:

zamiast sklejać takie zapytanie zrób pętlę po tych wszystkich id i kolejno zapełniaj tablicę wynikami