Dołącz do zespołu ekspertów! Backend lub Frontend Developer?

Sprawdź najnowsze oferty pracy naszego partnera - 8lines.io!

Zapytanie sortujące

SQL  Założony przez  ficus.

Mam delikatny problem z zapytaniem do bazy, mam tablicę wartości - np 2,3,7,8. 
W zapytaniu typu select chce wyrenderować całą tablicę sortując po id, ale tak aby id 2,3,7,8 były na przedzie. 

Teoretycznie mogę to zrobić w ten sposób: 
SELECT namecompanycid FROM something WHERE 1=1 ORDER BY cid='3' DESCcid='6' DESCcid DESC

W ten sposób wywali mi najpierw firmę 3, potem firmę 6, a potem już normalnie pozostałe firmy w kolejności spadkowej po cid.
Problem w tym, że wydaje mi się to trochę lamerskim rozwiązaniem w momencie gdy więcej firm na być wyświetlonych na przedzie, a dodatkowo mam problem z wspomnianą tablicą. 
Zapytanie idzie przez php i chcę określić sortowanie za pomocą zmiennej. Skoro tablica zawiera np. trzy elementy: 3 , 6 , 8 to mógłbym użyć funkcji implode() aby zamienić je na stringa i wrzucić w zapytanie. 
SELECT namecompanycid FROM something WHERE 1=1 ORDER BY cid='$sortuj' DESCcid DESC

Idąc wersja 'lamerską' próbowałem na chama: 

$tablica2 implode("cid="$sortuj); 

Ale jak nie trudno się domyślić, to tak pięknie nie działa bo to zwróci coś w stylu 5cid=7cid=8cid=9. 


tl;dr;
jak elementy z tablicy wyświetlić w zapytaniu sql na początku, a potem już dalej puścić sortowanie normalnie. 
"Try not. Do... or do not. There is no try."
Poświęć 5 minut. Nie bądź ignorantem!  -  Jak zbadać element?
Nie wiem do konca o co ci chodzi. Jezeli o to co mysle to zamiast DESC wystarczy uzyc ASC
Jak czytasz mój post to sprawdź czy go nie zedytowałem bo niezdecydowany jestem.
Chodzi o to by wyniki posortować według asc lub desc, ale na samym przedzie listy były jakieś wyjątki, np. 3,6.

Obrazowo - z listy 10,9,8,7,6,5,4,3,2,1 zrobić 4,7,5,10,9,8,6,3,2,1
W sumie mam pewien pomysł na workaround'a, ale mało eleganckie rozwiązanie będzie
"Try not. Do... or do not. There is no try."
Poświęć 5 minut. Nie bądź ignorantem!  -  Jak zbadać element?
ORDER BY FIELD(id, [ids in
order])


ORDER
BY provider.package_id DESC
, FIELD
(zip,91709,92886,92807,...,91356)


ORDER BY FIELD
(user_id,5,3,2,...,50) LIMIT 10
Żadne z powyższych nie działa prawidłowo. W każdym jest założenie, że znam wszystkie id, a to nie prawda - znam tylko ID które mają być na przedzie, reszta jest dynamiczna. Chyba, że czegoś nie zrozumiałem.
"Try not. Do... or do not. There is no try."
Poświęć 5 minut. Nie bądź ignorantem!  -  Jak zbadać element?
ORDER BY FIELD
(user_id,5,3,2,...,50), FIELD DESC

pisze z tel



Użytkownicy przeglądający ten wątek:

2 gości