Skocz do zawartości

[Mysql] Funkcja IN() i Order By defaultowy


burzam

Rekomendowane odpowiedzi

Witam,

moze to proste pytanie bo cos przeoczylem, ale nigdzie nie moge znalezc rozwiazania.

Sytuacja przedstawia sie nastepujaco (uproscilem na maxa zeby wazne bylo tylko moje zagadnienie ):

- prosta tabela, 5 rekordow, id od 0 do 4, reszta bez znaczenia

Chce wyciagnac z bazy 3 rekordy, o numerach 1, 2 oraz 3

- SELECT * FROM `tabela` WHERE id IN (2,3,1)

Wartosci pol id w IN sa celowo w innej kolejnosci, poniewaz sa to wartosci z koszyka (sesji zapisanej w tabeli), dodawanie tych wartosci jest dynamiczne wiec i kolejnosc czesto sie zmienia.

Moje pytanie brzmi, jak posortowac wyniki tego zapytania aby kolejnosc byla dokladnie taka sama jak w IN (czyli 2,3,1) ?

Czy jest jakas prosta funkcja mysql zwiazana z kolejnoscia wartosci w IN ?

Z gory dziekuje,

pozdro

Odnośnik do komentarza
Udostępnij na innych stronach

Zapisuj sobie date dodania produktu do koszyka i po niej sortuj ;)

Nie musze daty, bo mam klucz tabeli sesyjnej z koszyka:

$_SESSION[koszyk][0]="costam0";

$_SESSION[koszyk][1]="costam";

$_SESSION[koszyk][2]="costam2";

$_SESSION[koszyk][3]="costam3";

Tak wiec wedlug Twojego pomyslu mozna byloby wykorzystac klucz, tylko pytanie:

Jak to zrobic w zapytaniu sql ? :spam:

Odnośnik do komentarza
Udostępnij na innych stronach

Raczej przez IN nie posortujesz, przychodza mi do glowy dwa rozwiazania:

1) zapisac zmienne sesyjne do tablicy tymczasowej, np:

session,index,costam i zrobic join'a z sortem po index.

2) zapisac wyniki do tablicy php i posortowac w phpie (jesli niewielka tablica , a tak wyglda, to powinno byc ok)

Odnośnik do komentarza
Udostępnij na innych stronach

Raczej przez IN nie posortujesz, przychodza mi do glowy dwa rozwiazania:

1) zapisac zmienne sesyjne do tablicy tymczasowej, np:

session,index,costam i zrobic join'a z sortem po index.

2) zapisac wyniki do tablicy php i posortowac w phpie (jesli niewielka tablica , a tak wyglda, to powinno byc ok)

Tez o tym myslalem , tylko ze dane na ktorych operuje (choc samych indexow jest malo) zawieraja znaczna ilosc tekstu.

Moge sprobowac w ten sposob...

Przy kazdym dodaniu elementu do koszyka - zapisac do innej tablicy sesyjnej pozostale wartosci czyli np . opis, link itp. z tym samym indexem:

$_SESSION[koszyk][id][1]="jakies id";

$_SESSION[koszyk][opis][1]="jakis opis";

$_SESSION[koszyk][opis][1]="jakis link";

i nie bede potrzebowal juz w ogole zapytania z bazy - jedynie przy dodawaniu i usuwaniu elementow...

:)

troche mnie naprowadziles thx.

przeraza mnie tylko ilosc tych wartosci ktore musze zapisac do odzdzielnych tablic... yyyyy... z 15...

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności