Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL]Następny i poprzedni rekord
trifek
post
Post #1





Grupa: Zarejestrowani
Postów: 340
Pomógł: 0
Dołączył: 28.09.2015

Ostrzeżenie: (0%)
-----


Witam.
Mam wiele rekordów z identyczną datą. Wpisy w bazie nie są dodawane chronologicznie.

Baza z przykładowymi danymi: https://pastebin.com/L32J1wpX

Baza posiada listę ze zdjęciami, które wyświetlam za pomocą zapytania:

  1. SELECT * FROM psGalleryCategories WHERE enable = 1 ORDER BY date DESC.


Wchodzę w rekord o id = 19 (id_categories_of_photos = 19) i chciałbym wyświetlić poprzedni i kolejny rekord (z uwzględnieniem dat).

Próbowałem takie coś:

Prv:
  1. SELECT * FROM psGalleryCategories WHERE id_categories_of_photos != :id_categories_of_photos AND date <= :date AND enable = 1 ORDER BY date DESC LIMIT 1;



Next:
  1. SELECT * FROM psGalleryCategories WHERE id_categories_of_photos != :id_categories_of_photos AND date >= :date AND enable = 1 ORDER BY date DESC LIMIT 1;




Ale nie działa. Zwraca błędny wynik. Jak to naprawić?

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
trueblue
post
Post #2





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Jeśli zdarzają się daty równe, to po pierwsze nie wybierzesz rekordu przed lub po ze względu na nierówność słabą. Musiałaby być nierówność ostra, ale nie na dacie, lecz na kluczu, który wprowadza tą chronologię. Wtedy poprzedni rekord to < i DESC, następny to > i ASC.
Go to the top of the page
+Quote Post
Tomplus
post
Post #3





Grupa: Zarejestrowani
Postów: 1 883
Pomógł: 231
Dołączył: 20.03.2005
Skąd: Będzin

Ostrzeżenie: (0%)
-----


next row
  1. SELECT * FROM psGalleryCategories WHERE enable = 1 AND id_categories_of_photos = (SELECT min(id_categories_of_photos ) FROM psGalleryCategorieswhere WHERE id_categories_of_photos > :id_categories_of_photos) ORDER BY date DESC;

prev row
  1. SELECT * FROM psGalleryCategories WHERE enable = 1 AND id_categories_of_photos = (SELECT min(id_categories_of_photos ) FROM psGalleryCategorieswhere WHERE id_categories_of_photos < :id_categories_of_photos) ORDER BY date DESC;

Go to the top of the page
+Quote Post
miccom
post
Post #4





Grupa: Zarejestrowani
Postów: 493
Pomógł: 8
Dołączył: 7.07.2007
Skąd: Tychy

Ostrzeżenie: (0%)
-----


Ja dałbym datę jako timestamp, wtedy możesz wyciągać dane po liczbach co jest łatwiejsze i szybsze od operacji na dacie (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 14.09.2025 - 20:50