Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql] Pobieranie wyników z bazy
Forum PHP.pl > Forum > Przedszkole
Rafael6666
Jak pobrać np. 2 rekordy przed danym rekordem i 2 po danym rekordzie?

Z góry dziękuję za pomoc:)
Blajo
  1. SELECT * FROM 'tabela' WHERE id='id_od_ktorego_chcemy_pobrac_nowsze_2_wyniki'+1 LIMIT 0, 2
Rafael6666
To co powiedziałeś wogóle nie działa.

Wykombinowałem coś takiego:

  1. (SELECT `a`, `b` FROM `tabela` WHERE `id`<5 ORDER BY `id` DESC LIMIT 2 ) UNION (SELECT `a`, `b` FROM `tabela` WHERE `id`>5 LIMIT 0, 2)


Tylko jeszcze jest mały błąd. Skrypt wyświetla mi teraz rekordy w kolejności 4, 3 UNION 6, 7, je chcę żeby było 3, 4 UNION 6, 7...

Proszę o pomoc snitch.gif ...
l0ud
Rafael6666, ale po co tak kombinować? smile.gif Nie można po prostu:

  1. SELECT * FROM tabela WHERE id BETWEEN 3 AND 4 OR id BETWEEN 6 AND 7 ORDER BY id ASC;


...dla rekordu o ID 5?
Rafael6666
Tu nie chodzi konkretnie o rekord o id 5, i jest jeszcze jeden warunek, rekordy w bazie mogą być ustawione np. tak:

CODE
+----+----------+
| a | b |
+----+----------+
| 1 | Rekord1 |
| 2 | Rekord2 |
| 3 | Rekord3 |
| 7 | Rekord7 |
| 11 | Rekord11 |
| 15 | Rekord15 |
| 19 | Rekord19 |
| 30 | Rekord30 |
| 32 | Rekord32 |
+----+----------+


Wtedy gdy chcę pobrać 2 rekordy przed i 2 rekordy po rekodzie 11, chciałbym otrzymać rekordy w kolejności 3, 7, 15, 19...
nospor
czy wiesz co to jest order by ... desc ?
Jak nie wiesz to zapraszam do manuala.
Jak wiesz to czemu sie dziwisz ze wyswietla ci w kolejnosci malejacej skoro sam mu kazesz w takiej wyswietlac?

ps: przenosze

edit down rafael: racja.
l0ud
W takim razie zrób coś w tym stylu:

  1. SELECT * FROM `tabela` WHERE `id` < 5 ORDER BY `id` ASC LIMIT 2 UNION SELECT * FROM `tabela` WHERE `id` > 5 LIMIT 2 ORDER BY `id` ASC


No tak, jak nospor powiedział, właściwie to się różni tylko ASC zamiast DESC...
Rafael6666
Wiem do czego służy ASC do czego służy DESC itd. ale musicie zrozumieć, że jak dam przed UNION ASC, to będzie kolejność 1, 2 UNION 6, 7...

Muszę zrobić tak, żeby cały pierwszy człon prze UNION posortować według ASC...
nospor
oczywiscie masz racje. za szybko napisalem.

  1. (SELECT ID FROM `tabela` WHERE `id`<5 ORDER BY `id` DESC LIMIT 2 ) UNION
  2. (SELECT ID FROM `tabela` WHERE `id`>5 LIMIT 0, 2) ORDER BY id ASC;

teraz powinno byc ok
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.