Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql/php] Przejscie do kolejnego rekordu
Forum PHP.pl > Forum > Przedszkole
darth_sidious
Witam

Mam takowy problem. W tabeli mam liste firm. Kluczem glownym tabeli jest nr danej firmy. Sa to numery 4-cyfrowe nadawane losowo. Na sronie mozliwe jest przegladanie firm w formie listy, ktora zawiera jedynie nr firmy i nazwe firmy. Po kliknieciu na nr firmy wyswietlane sa szczegolowe dane (adres, osoby kontaktowe, NIP, itp). Obecnie, gdy chce przejrzec szczegoly nastepnego rekordu (firmy) musze wrocic do listy i znowu wybrac.
Problem polega na tym, iz nie wiem jak wstawic w widoku szczegolowym odnosnikow do rekordu poprzedniego i nastepnego, biorac pod uwage, ze nr firm (klucze glowne) nie sa po kolei.

Pozdrawiam
Darth
NuLL
Masz ten tam jakis numer i robisz
Kod
SELECT cos FROM tabela WHERE numer>$twojNumer ORDER BY numer ASC LIMIT O,1
piotrekkr
no coz mi sie wydaje ze mozna by cos takiuego zrobic

nastepny rekord
  1. SELECT MIN(`kolumna_znumerami_firm`) FROM `nazwa_tabeli` WHERE `kolumna_znumerami_firm`>numer_obecnej_firmy
NuLL
Nie wiem po co za bardzo pobierac caly wynik a potem go jeszcze przepuszczac przez f-cje ale co tam winksmiley.jpg
piotrekkr
Cytat(NuLL @ 6.06.2006, 21:12 ) *
Nie wiem po co za bardzo pobierac caly wynik a potem go jeszcze przepuszczac przez f-cje ale co tam winksmiley.jpg

eee ja nie wiem o co ci chodzi przecierz wynik bedzie gotowym id nastepnej firmy??
NuLL
Wychodzi na to samo - z tym ze moje zapytanie bedzie szysze :] Z tym w moim zapytaniu trzeba zmienic cos na numer tongue.gif
piotrekkr
aha no jesli chodzi o szybkosc to nie jestem taki pewny czy moje nie bedzie szybsze bo tak mi sie zdaje ze wyszukanie wartosci najmniejszej jest szybsze niz sortowanie?? ale moze sie myle jakims ekspertem nie jestem smile.gif
NuLL
Tyleze w Twoim wypadku MySQL i tak na poczatku wszystko sortuje aby wykonac klauzule WHERE smile.gif Moj to robi tyleze jakby tu rzec bardziej publicznie smile.gif
babejsza
@NuLL - jesteś pewien, że twoje będzie szybsze? Co w przypadku 1 000 000 rekordów? Wysortowanie ich trochę potrwa, a wyszukanie wartości MIN chwilkę. Tak mi się przynajmniej wydaje winksmiley.jpg.
piotrekkr
heh tego nie wiedzialem w sumie no ale juz wiem biggrin.gif ciekawi mnie skad masz informacje tego typu sa gdzies na stronce mysql czy moze z jakichs ksiazek portali etc.questionmark.gif bede wdzieczny za jakies linki smile.gif ciekawi mnie ten temat smile.gif. pozdro
NuLL
@babejsza - zwaz ze jeszcze trzeba wykonac WHERE dla miliona.
babejsza
Oczywiście, tyle że nie trzeba dla tego samego miliona wykonywać jeszcze sortowania smile.gif.
darth_sidious
Cytat(NuLL @ 6.06.2006, 18:58 ) *
Kod
SELECT cos FROM tabela WHERE numer>$twojNumer ORDER BY numer ASC LIMIT O,1


Wielkie dzieki ... O to mi wlasnie chodzilo... ;-)

Pozdrawiam
Darth
SongoQ
Hm patrze na te 2 zapytania i @NuLL do konca nie masz racji. Wydajnosc zalezy od indeksow.

1 zapytanie
  1. SELECT cos FROM tabela WHERE numer>$twojNumer ORDER BY numer ASC LIMIT O,1

Jesli numer jest indeksem to sortowanie zalatwiamy jak i warunek. Zostaje tylko dodana funkcja ograniczajaca zbior

2 zapytanie
  1. SELECT MIN(`kolumna_znumerami_firm`) FROM `nazwa_tabeli` WHERE `kolumna_znumerami_firm`>numer_obecnej_firmy

dla indeksu kolumna_znumerami_firm bedzie blyskawiczne ale dochodzi warunek.

Teoretycznie 2 zapytanie powinno byc szybsze. Bo jest mniejsze o instrukcje zawezajaca zbior. To takie moje przemyslenia i tak prawde powie explain.
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.