Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Sąsiadujące wiersze w tabeli bazy danych, Jak efektywnie wyciągnąć?
djlinux
post
Post #1





Grupa: Zarejestrowani
Postów: 12
Pomógł: 2
Dołączył: 4.07.2009
Skąd: Zamość

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


Witam
Posłużę się przykładem, posiadam taką tabelkę:
  1. mysql> SELECT * FROM photos;
  2. +----+---------+----------+
  3. | id | content | sequence |
  4. +----+---------+----------+
  5. | 1 | #1 | 1 |
  6. | 2 | #2 | 4 |
  7. | 3 | #3 | 7 |
  8. | 4 | #4 | 11 |
  9. | 5 | #5 | 32 |
  10. +----+---------+----------+
  11. 5 rows IN SET (0.00 sec)

Za cel stawiam sobie odczytanie sąsiednich wierszy (sąsiednich względem wartości pola sequence) powiedzmy dla id=3 (oczywiście przy założeniu, że id mogą być "nie po kolei").

Chciałbym poprosić o sprawdzenie, a może podpowiedzenie innego efektywniejszego sposobu na osiągnięcie mojego celu. Mój dotychczasowy rezultat:
  1. mysql> (SELECT * FROM photos WHERE sequence < (SELECT sequence FROM photos WHERE id=3) ORDER BY sequence DESC LIMIT 1) UNION
  2. -> (SELECT * FROM photos WHERE sequence > (SELECT sequence FROM photos WHERE id=3) ORDER BY sequence ASC LIMIT 1);
  3. +----+---------+----------+
  4. | id | content | sequence |
  5. +----+---------+----------+
  6. | 2 | #2 | 4 |
  7. | 4 | #4 | 11 |
  8. +----+---------+----------+
  9. 2 rows IN SET (0.00 sec)


Struktura tabeli w razie potrzeby, stworzona tylko w celu przetestowania idei opisanej wyżej.
  1. mysql> SHOW CREATE TABLE PHOTOS;
  2. +--------+-------------------------------------------------
  3. | TABLE | CREATE TABLE
  4. +--------+-------------------------------------------------
  5. | PHOTOS | CREATE TABLE `photos` (
  6. `id` int(11) NOT NULL AUTO_INCREMENT,
  7. `content` varchar(20) NOT NULL,
  8. `sequence` int(11) NOT NULL,
  9. PRIMARY KEY (`id`)
  10. ) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=latin1 |
  11. +--------+-------------------------------------------------
  12. 1 row IN SET (0.00 sec)


Ten post edytował djlinux 9.08.2010, 09:42:38
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 18.09.2025 - 16:14