Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] Kolejnosc wybranych danych z bazy
Forum PHP.pl > Forum > Przedszkole
Piotr_BB
Witajcie, chcialbym rozwiazac pewien problem, chodzi o kolejnosc wyciagnietych danych z bazy. Realizujac to wszystko chce po prostu uzyskac dana kolejnosc wykonujac jedno zapytanie.

Przy takim zapytaniu:

  1. SELECT * FROM bb WHERE id = 3 OR id = 4 OR id = 1 OR id = 2


Majac dane w tabeli w kolejnosci, bez sorta

Kod
id 1
id 2
id 3
id 4


otrzymuje wyniki: 1, 2, 3, 4, gdzie jak idzie zauwazyc chcialbym uzyskac inna kolejnosc. Any tips?

morbic
  1. SELECT * FROM bb WHERE id IN (1,2,3,4) ORDER BY id DESC


ORDER BY id DESC <----
Cienki1980
Sortowanie DESC i ASC posortuje wyniki tak :
Kod
1
2
3
4
....
4
3
2
1

Z tego co autor napisał wnioskuję, że chce mieć wynik w postaci :
Kod
3
4
1
2

Z mojej wiedzy nie ma możliwości posortowania w ten sposób za pomocą zwykłego zapytania SQL.

EDIT do poniższego:
Na takie zapytanie bym nie wpadł .. jak widać można.
kefirek
  1. SELECT * FROM bb WHERE id IN (1,2,3,4) ORDER BY id = 3 DESC, id = 4 DESC, id = 1 DESC, id = 2 DESC
thek
Słowo kluczowe: ORDER BY FIELD
Piotr_BB
Dzieki za odpowiedzi.

@kefirek niezle rozwiazanie smile.gif tylko czy teraz Twoje rozwiazanie plus oprawa w PHP bedzie mniej obciazac server co do calosci realizacji tej czesci zadania nizeli normalne wyciagniecie danych z bazy i wyswietlenie ich wzgledem offsetow wg przygotowanej juz tablicy z danym potrzebnym sortowaniem?

co do opcji @thek to chyba dosc optymalne rozwiazanie, tylko teraz czy takie wyszykanie/sortowanie po polach tekstowych o dlugosci 10 znakow, nie bedzie gorsze od podanego powyzej?

EDIT ew. moglbym przerobic skrypt i zastosowac pola liczbowe w zamian za 10 znakowe tekstowe. Jak te 3 sprawy mialby sie do optymalizacji, dla przykladu podajac: 1 mln zapytan na godzine.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.