14.04.2016, 10:21
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:
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.
Idąc wersja 'lamerską' próbowałem na chama:
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.
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:
Kod PHP:
SELECT name, company, cid FROM something WHERE 1=1 ORDER BY cid='3' DESC, cid='6' DESC, cid 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.
Kod PHP:
SELECT name, company, cid FROM something WHERE 1=1 ORDER BY cid='$sortuj' DESC, cid DESC;
Idąc wersja 'lamerską' próbowałem na chama:
Kod PHP:
$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.