anti päewik

Sisaldab Palju Erinewaid Imesid ja Öppetusi Tarkadele.

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



1
Author:  lauri | Date:  22.Jul 05 | Time:  23:43

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;

2
Author:  duke | Date:  22.Jul 05 | Time:  23:53

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 :)

3
Author:  Lahendus | Date:  6.Aug 05 | Time:  19:48

Kus lahendus on?



Write a Comment

Note: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>