pobieranie poprzedniego rekordu

0

mam taką tabelkę

id
-----
1
2
3
5
6
7

Znając jedno id chce pobrać poprzedni i następny rekord. Tyle że te pola nie koniecznie muszą iść po kolei, więc zwykłe dodawanie i odejmowanie odpada... da się skonstruować takie zapytanie - "Pobierz rekordy które są obok rekordu o id = x" ?

0
Kooba napisał(a)

mam taką tabelkę

id
-----
1
2
3
5
6
7

Znając jedno id chce pobrać poprzedni i następny rekord. Tyle że te pola nie koniecznie muszą iść po kolei, więc zwykłe dodawanie i odejmowanie odpada... da się skonstruować takie zapytanie - "Pobierz rekordy które są obok rekordu o id = x" ?

robisz zwykle "select id nazwatabeli" to jest bez sortowania wszystko jak leci lub z sortowniem
"select id nazwatabeli ORDER BY LP ASC"
a następnie

 tabela. movefirst;lub first
  while not tabela.eof do
   begin
      if tabela.fields['ID'].value=cos zalozonego then 
        begin
           A1:=tabela.fields['ID'].value zapamietujesz ten rekord
           movenext lub next
           A2:=tabela.fields['ID'].value zapamietujesz ten rekord
           tabela tabela.movelast lub last
           A0:=A3;
        end;
      A3:=tabela.fields['ID'].value zapamietujesz ten rekord
      movenext lub next
  end;

Pisane z głowy ale idea jest. No chyba , że można to rozwiązać zapytaniem sql ale tego to nie wiem :-)

OK Misiekd poczekam aż napiszesz to zapytanie.
Człowiek uczy się całe życie a i tak głupim umrze !

0

abj to miało być zapytanie
Kooba da się - kiedyś tu dokładnie takie samo pytanie było więc musi być odpowiedz. Na razie nie mam czasu ale jak nie znajdziesz to wieczorem Ci napiszę

BTW jaka baza?

0

abj: wygrzebać sobie to też umiem z poziomu php ale mnie interesuje zapytanie (kwestie wydajności...)

misiekd: MySQL5

0
SELECT id FROM tabelka WHERE id IN (SELECT id FROM tabelka WHERE id < jakies_id ORDER BY id DESC LIMIT 1) OR id IN (SELECT id FROM tabelka WHERE id > jakies_id ORDER BY id ASC LIMIT 1)

coś w ten deseń

0

jeszcze order by sie przydal, na wszelki wypadek ;)

0

celna uwaga, poprawione

0

Wyrzuca "This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery" ale to już pewnie kwestia czysto techniczna. Jak już wiem, że jest coś takiego jak IN (nie wiedziałem) to sobie poradzę

dzięki misiek <soczek>

1 użytkowników online, w tym zalogowanych: 0, gości: 1