![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 78 Pomógł: 2 Dołączył: 21.10.2006 Ostrzeżenie: (0%) ![]() ![]() |
Trochę niezrozumiały tytuł topiku ale może tu uda mi się wyjaśnić.
Mam tabelę złożoną z kolumn: kol1, kol2, kol3 ... powiedzmy że w 'n'-tym wierszu w kol1 jest umieszona wartość 'abc'. Teraz tak, znam tą wartość 'abc', jednak nie wiem w którym dokładnie jest wierszu a potrzebuje pobrać wartości z wiersza 'n-1' i 'n+1' kol1. Jeżeli ktoś potrafi napisać takie zapytanie bardzo bym prosił. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 17 Pomógł: 0 Dołączył: 5.08.2006 Skąd: Opole Ostrzeżenie: (0%) ![]() ![]() |
Wiem kolego. w rzeczywistości kolumna 'kol1' ma wartości int, jest kluczem głównym z atrybutem autoicrement, chodzi tylko o to że może się zdarzyć że jak mam n=53 to nie ma wiersza n-1 ponieważ został wcześniej usuniety, chyba zostaje mi napisanie skryptu który będzie sprawdzał czy jest n-1, jeżeli nie to n-2 itd tylko czy może da się coś takiego napisać z poziomu sql aby uniknąć wysyłania masy zapytań ? Ja bym zrobił tak bez zadnego kombinowania: 1. pobierasz id (numer) wiersza: "select `n` from `tabela` where kol1='abc'", zalozmy ze wynik zwrócony n=53, 2. pobierasz pierwszy wiersz o numerze mniejszym od tego n: "select * from `tabela` where `n`<53 LIMIT 1" -czyli przerwie przeszukiwanie tabeli po znalezieniu pierwszego wiersza o n<53 3. pobierasz pierwszy wiersz o numerze wiekszym od n: "select * from `tabela` where `n`>53 LIMIT 1" moze sie zdazyc ze selecty z punktów 1, 2 lub 3 nic nie zwrócą więc bedziesz musiał jeszcze zabezpieczyc skrypt na taka ewentualnosc. Powodzenia i napisz jak poszło! |
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.10.2025 - 04:52 |