Nuputamist: eelmine/järgmine lingid
Kirjutad veebifotoalbumit. Eksisteerib järgmise struktuuri ja sisuga SQL tabel:
mysql> select path,id,date_submitted from pictures where parent_album = 4; +---------------------------------------------+----+---------------------+ | path | id | date_submitted | +---------------------------------------------+----+---------------------+ | images/jacob/eriti uus/IMG_3096.JPG | 25 | 2005-06-28 23:58:26 | | images/jacob/eriti uus/IMG_3111.JPG | 26 | 2005-06-29 00:01:05 | | images/jacob/eriti uus/IMG_3112.JPG | 27 | 2005-06-29 00:20:03 | | images/jacob/eriti uus/bungee.png | 30 | 2005-06-29 00:27:36 | | images/jacob/eriti uus/vaike_kopter.jpg | 32 | 2005-06-29 00:43:41 | +---------------------------------------------+----+---------------------+
Ülesanne: kirjuta kood, mis suvalise ette antud pildi ID puhul oskab kuvada eelmine/järgmine lingid.
Kui vaadatakse pilti id-ga 30, siis “eelmine” peab viima 27 peale ja järgmine “32″ peale. Kui vaadatakse pilti, mille ID on 25, siis “eelmine” linki olla ei tohi, “järgmine” peaks viitama 26 peale.
Võid kirjutada niipalju SQL päringud kui tahad. Võib ka loogika koodi sisse ehitada.
Kirjed on järjestatud date_submitted välja järgi.
Lahendus ei pea olema MySQLis, võib kasutada stored procce, vaateid (views) või mis iganes sul parajasti pähe torkab.
Pakkumised kirjutage kommentaarina (pole vast kõige mugavam) või saatke meiliga duke at masendav punkt com.
Soovitus: free your mind ;)
Teisipäeva (26.07) õhtul näitan oma lahendust ja kommenteerin teiste pakutud variante.





Comments
SELECT * FROM (
SELECT p.path FROM pictures p, pictures c
WHERE p.parent_album = c.parent_album AND p.date_submitted < c.date_submitted AND c.id = :current_id
ORDER BY p.date_submitted ASC)
WHERE rownum <=1
ja
SELECT * FROM (
SELECT p.path FROM pictures p, pictures c
WHERE p.parent_album = c.parent_album AND p.date_submitted > c.date_submitted AND c.id = :current_id
ORDER BY p.date_submitted ASC)
WHERE rownum <= 1;
Mingi kummaline SQL dialekt aga idee on arusaadav küll, eeldusel et pildid on järjestatud date_submitted järgi tehakse 2 päringut, mis siis annavad (või ei anna) järjestuses eelmise/järgmise kirje.
Aga minu lahendus on hoopis teistsugune :)
Kus lahendus on?
Write a Comment