This post comes from the first version of this blog.
Please send me an email if anything needs an update. Thanks!
Pracowałem ostatnio nad skryptem galerii w jednym z projektów i w pewnym momencie natrafiłem na problem polegający na wyświetlaniu w widoku pojedynczego zdjęcia linków kierujących do następnego i poprzedniego elementu. Nie jest to pierwszy raz, kiedy zostałem zmuszony do “poradzenia sobie” z tego typu sytuacją, dlatego uznałem, że warto opisać wykorzystane rozwiązanie na blogu. Standardowo mam nadzieję, że się przyda, zatem zapraszam do lektury. ;]
Fotografia: ayesamson, CC-BY.
(My)SQL: Jak znaleźć poprzedni i następny rekord w jednym zapytaniu?
Załóżmy następującą sytuację: mamy tabelę zawierającą galerie:
|
|
i drugą tabelę zawierającą zdjęcia:
|
|
Wybierając konkretne zdjęcie [id = 4]:
|
|
dostajemy odpowiednie dane w tablicy pobranej z bazy danych. Chcąc wygenerować linki do poprzedniego i następnego zdjęcia musimy pobrać identyfikator “lewego” i “prawego” zdjęcia z tej samej galerii. Oto kod rozwiązania:
|
|
Rozwiązanie polega na tym, że pobieramy podzapytaniem w pierwszym przypadku największy identyfikator spośród wszystkich mniejszych od danego, a w drugim najmniejszy spośród wszystkich większych od danego. Wszystko oczywiście w ramach jednej galerii.
Mam nadzieję, że dzisiejszy krótki wpis będzie służył Wam jako szybka referencja w razie potrzeby. Przy okazji - może podzielicie się własnymi sposobami na rozwiązanie tego problemu?