Autor Zpráva
Izolex
Profil
Na webu mám výpis "TOP" fotek. Jsou to fotky řazené podle počtu lajků, které jsou zapsané v jiné tabulce. Vybírám je tímto dotazem:
SELECT a.id FROM dev_photos a LEFT JOIN dev_likes c ON c.photo=a.id GROUP BY a.id ORDER BY COUNT(c.photo) DESC

Při prohlížení fotek mám tlačítko na další a předchozí fotku, potřeboval bych poradit, jak zjistit jaké ID má další a předchozí fotka, podle řazení lajků, od určitého ID. Zjednodušeně prohlížím fotku s ID 100, která má 50 lajků a já potřebuju zjistit, jaké ID má další a předchozí fotka v pořadí. Hledal jsem, ale zatím jsem nenašel a ani nepřišel na řešení.. Předem děkuji za všechny rady!
Tori
Profil
Některé časteji řešené dotazy pro MySQL - FAQ » Data pro další a předchozí záznam vůči $id, když jsou položky seřazeny podle jiného sloupečku než id
bude to potřebovat trochu upravit
Kajman
Profil
Izolex:
prohlížím fotku s ID 100, která má 50 lajků a já potřebuju zjistit, jaké ID má další a předchozí fotka

Kdyby ty lajky byly předpočítány, tak by to šlo podle toho faq. Bez toho to asi půjde, ale svižné to nebude.

SELECT a.id
FROM   dev_photos a
       LEFT JOIN dev_likes c
              ON c.photo = a.id
GROUP  BY a.id
HAVING ( Count(c.photo), a.id ) > ( 50, 100 )
ORDER  BY Count(c.photo) ASC,
          a.id ASC
LIMIT  1

SELECT a.id
FROM   dev_photos a
       LEFT JOIN dev_likes c
              ON c.photo = a.id
GROUP  BY a.id
HAVING ( Count(c.photo), a.id ) < ( 50, 100 )
ORDER  BY Count(c.photo) DESC,
          a.id DESC
LIMIT  1 
Izolex
Profil
Super, funguje to přesně jak má :) Díky moc!

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: