Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL] Jak sprawdzic ktory od gory jest dany rekord ?
Forum PHP.pl > Forum > Przedszkole
PiXel2.0
Czy istnieje sposob na sprawdzenie ktory w kolejnosci jest rekord spelniajacy jakis warunek questionmark.gif

Chodzi o to, ze najpierw wybieranych jest kilka rekordow (np relacje i pozostale warunki) po czym sa one sortowane i dopiero pozniej (na tym zestawie) chodzi o podanie ktory od gory jest rekord spelniajacy jakis inny warunek.

Chodzi o cos prawie odwrotnego do LIMIT bo po uzyskaniu interesujacego mnie zestawu wynikow nie chce wybrac rekordu ktoregos od gory tylko otrzymac informacje ktory od gory jest dany rekord.

Potrzebuje tego do budowy forum a konkretnie do tego aby po usunieciu posta przez moderatora zostal on przekierowany nie tylko do dzialu i tematu skad usunal post, ale tez na strone z ktorej go usunal.

Moderator usuwa post poprzez przekazanie jedynie identyfikatora posta.
Po identyfikatorze latwo dojsc do tematu i dzialu, ale ze strona juz jest trudniej.
Mozna isc na latwizne i wraz z id posta przekazac strone do $_GET, ale ja nie chce isc na latwizne wiec na podstawie samego identyfikatora musze tez dojsc do strony czyli po uzyskaniu dzialu i tematu otrzymuje zestaw wynikow (wszystkie posty w temacie) i po id posta ktory ma byc usuniety chce poznac jego pozycje od gory w tym zestawie aby na tej podstawie okreslic strone.

Mozna pobrac tez caly ten zestaw i sprawdzic to po stronie PHP, ale to moze trwac zbyt dlugo i nie ma sensu impotrowac takich zasobow (moze tego byc sporo).

Chyba, ze da sie to rozwiazac w jakis inny sposob questionmark.gif
Lee
Edit: Właśnie doczytałem, że chcesz to w SQL zrobić więc poniższy algorytm nie zda egzaminu, bo jest pod PHP (ale mimo wszystko zostawię go)

Jeżeli znasz ID wpisu, którego chcesz sprawdzić kolejność, to może tym sposobem, że:
1, Masz te wpisy dajmy na to ich jest n=10
2. Bierzesz je sobie tam je sortujesz jak tam chcesz.
3. ID posortowanych wpisów wrzucasz do tablicy n=10 elementowej
4. W pętli sprawdzasz czy aktualny wpis $a[i] (a - nazwa tablicy, i - aktualny przebieg pętli) jest taki sam jak poszukiwany (if $a[i] == $twoje_id)
5. Jeżeli jest zwiększ x++ (zmienna pomocnicza na początku równa 0) i przerwij pętlę
6. Jeżeli nie jest zwiększ x++

Myślę że algorytm da się zrozumieć i powinien działać.
PiXel2.0
Myslalem o czyms bardzo podobnym, ale to jednak musi byc po stronie bazy a nie PHP.

Jesli nie dostane tutaj odpowiedzi to prosze moderatorow o przeniesienie temetu do dzialu SQL bo moze tam znajdzie sie ktos bardziej obeznany...
Kicok
Policz sobie ile postów starszych od usuwanego postu znajduje się w danym temacie i dodaj do tego 1. Przyda ci się funkcja COUNT( )
PiXel2.0
No tak, ale co wtedy gdy wiecej niz jeden post bedzie dodany w tym samym czasie questionmark.gif
Kicok
W takim razie albo dodawaj do bazy czas z setnymi sekundy albo policz postu które:
"są starsze od usuwanego ALBO ( są napisane w tym samym czasie co usuwany I mają mniejsze ID )"

powinno wystarczyć
PiXel2.0
Pomysl niby dobry (sam sie nad tym zasatanawialem), ale z czasem to nie bede raczej zmienial a z ID to sprawdzi sie tylko w przypadku postow jednak ja chce zastosowac podobny mechanizm rowniez dla tematow a, ze te sa sortowane wg daty ostatniej odpowiedzi to ich ID sa pomieszane wiec pozostaje tylko data a data moze byc ta sama...

Jakby ktos mial jeszcze jakies pomysly to prosze o wypowiedz.
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.