Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [mysql] Pobieranie wyników z bazy
Rafael6666
post 15.03.2008, 15:00:36
Post #1





Grupa: Zarejestrowani
Postów: 95
Pomógł: 0
Dołączył: 20.10.2006

Ostrzeżenie: (10%)
X----


Jak pobrać np. 2 rekordy przed danym rekordem i 2 po danym rekordzie?

Z góry dziękuję za pomoc:)


--------------------
Kompleksowe i profesjonalne tworzenie stron www
Go to the top of the page
+Quote Post
Blajo
post 15.03.2008, 16:57:41
Post #2





Grupa: Zarejestrowani
Postów: 98
Pomógł: 1
Dołączył: 7.08.2005
Skąd: Górny Śląsk

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


  1. SELECT * FROM 'tabela' WHERE id='id_od_ktorego_chcemy_pobrac_nowsze_2_wyniki'+1 LIMIT 0, 2


--------------------
tutoriale
Go to the top of the page
+Quote Post
Rafael6666
post 15.03.2008, 22:09:57
Post #3





Grupa: Zarejestrowani
Postów: 95
Pomógł: 0
Dołączył: 20.10.2006

Ostrzeżenie: (10%)
X----


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 ...

Ten post edytował Rafael6666 15.03.2008, 22:10:25


--------------------
Kompleksowe i profesjonalne tworzenie stron www
Go to the top of the page
+Quote Post
l0ud
post 15.03.2008, 22:21:44
Post #4





Grupa: Zarejestrowani
Postów: 1 387
Pomógł: 273
Dołączył: 18.02.2008

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


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?

Ten post edytował l0ud 15.03.2008, 22:22:08


--------------------
XMPP: l0ud@chrome.pl
Go to the top of the page
+Quote Post
Rafael6666
post 15.03.2008, 22:31:25
Post #5





Grupa: Zarejestrowani
Postów: 95
Pomógł: 0
Dołączył: 20.10.2006

Ostrzeżenie: (10%)
X----


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...


--------------------
Kompleksowe i profesjonalne tworzenie stron www
Go to the top of the page
+Quote Post
nospor
post 15.03.2008, 22:46:29
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
l0ud
post 15.03.2008, 22:47:49
Post #7





Grupa: Zarejestrowani
Postów: 1 387
Pomógł: 273
Dołączył: 18.02.2008

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


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...

Ten post edytował l0ud 15.03.2008, 22:49:13


--------------------
XMPP: l0ud@chrome.pl
Go to the top of the page
+Quote Post
Rafael6666
post 15.03.2008, 22:56:47
Post #8





Grupa: Zarejestrowani
Postów: 95
Pomógł: 0
Dołączył: 20.10.2006

Ostrzeżenie: (10%)
X----


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...

Ten post edytował Rafael6666 15.03.2008, 22:58:04


--------------------
Kompleksowe i profesjonalne tworzenie stron www
Go to the top of the page
+Quote Post
nospor
post 15.03.2008, 23:17:33
Post #9





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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: 14.07.2025 - 08:48