Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL]selektywne pobieranie danych + sortowanie
AniaR
post 19.07.2010, 11:34:38
Post #1





Grupa: Zarejestrowani
Postów: 92
Pomógł: 0
Dołączył: 6.05.2009
Skąd: warszawa

Ostrzeżenie: (0%)
-----


Powiedzmy ze mam w bazie zdjecia ktore maja takie numery id: 5, 6, 7, 8, 9

Chcialabym zadac tak pytanie aby pobrac zdjecia w takiej kolejnosci: 6, 7, 8, 9, 5
lub: 7, 8, 9, 5, 6
lub: 8, 9, 5, 6, 7 itd..

Chodzi o to aby pobrac dane od okreslonego id poczawszy..
Czy jest wogole taka mozliwosc?
Go to the top of the page
+Quote Post
H4eX
post 19.07.2010, 11:45:11
Post #2





Grupa: Zarejestrowani
Postów: 150
Pomógł: 15
Dołączył: 1.07.2010

Ostrzeżenie: (0%)
-----


5, 6, 7, 8, 9
  1. WHERE id >= 5 && id <= 9

7, 9
  1. WHERE id = 7 || id = 9
Go to the top of the page
+Quote Post
gothye
post 19.07.2010, 11:45:21
Post #3





Grupa: Zarejestrowani
Postów: 702
Pomógł: 65
Dołączył: 16.03.2009

Ostrzeżenie: (0%)
-----


zrób tak

  1. WHERE id_zdjecia IN (3,4,5,6,7,8)


wtedy pobierzesz zdjęcia wg tej kolejności co id


--------------------
Nie udzielam pomocy poprzez PW
Go to the top of the page
+Quote Post
AniaR
post 19.07.2010, 11:58:16
Post #4





Grupa: Zarejestrowani
Postów: 92
Pomógł: 0
Dołączył: 6.05.2009
Skąd: warszawa

Ostrzeżenie: (0%)
-----


Chyba mnie nie zrozumieliscie.. chcialabym poprostu zaczac pobieranie rekordow od srodka i zatoczyc petle..
Go to the top of the page
+Quote Post
thek
post 19.07.2010, 12:04:28
Post #5





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Oprócz IN i wymieniania żmudnego wszystkich po kolei możesz użyć BETWEEN.
EDIT: A co do dodatku... Można. Na kilka sposobów.
Albo wyniki z bazy wrzucasz do tablicy wpierw i nią manipulujesz, albo robisz 2 pętle while. Pierwsza przesuwa wskaźnik wyniku do określonego miejsca i leci do końca, druga leci od początku do określonego wskaźnika wyniku.
Przykład? Masz w wyniku 10 rekordów. Startować chcesz od 6.
1. Przesuwasz wskaźnik na ów 6 rekord
2. Czytasz wszystkie rekordy do końca.
3. Ustawiasz wskaźnik na początku wyników
4. Czytasz wszystkie rekordy od pierwszego do 5.
Przyda się licznik i funkcja przesuwająca wskaźnik - mysql_data_seek.

EDIT2: Oprócz tego przypomniało mi się jeszcze jedno. W klauzuli ORDER BY możesz nakazać ścisłe trzymanie się kolejności. Przykład?
  1. SELECT kolumny FROM tabela WHERE id BETWEEN 4 AND 8 ORDER BY FIELD (id, 6,7,8,4,5)
W takim wypadku dostaniesz wyniki dokładnie w tej kolejności jak chcesz, bez kombinowania po stronie PHP.
Powód edycji: [thek]: Gdy pisałem, nie było doprecyzowania :)


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
AniaR
post 19.07.2010, 12:43:31
Post #6





Grupa: Zarejestrowani
Postów: 92
Pomógł: 0
Dołączył: 6.05.2009
Skąd: warszawa

Ostrzeżenie: (0%)
-----


dziekuje, teraz wiem w ktora strone mam isc smile.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 30.06.2025 - 05:59