SQL: Nejdiskutovanejsi clanky
    Jan Tichy - Webbie 
    jan.tichy na webbie.cz
       
    Sobota Listopad  2 01:47:36 CET 2002
    
    
  
DDV,
prosim o pomoc pri vymysleni selectu (MySQL), nemuzu 
na to nejak prijit, at si lamu hlavu sebevic...
Mam tabulku s diskusema ke clanku, pro prehlednost zjednodusim:
  diskuse (diskuse_id, clanek_id, datum, text)
A rad bych jednim selectem (bez vnrenych selectu apod.) ziskal 
pet nejdiskutovanejsich clanku za posledni tyden, a to za podminek:
- v zaznamu musi byt pocet VSECH prispevku k clanku
- razeni je udelano tak, ze se vezmou u jednotlivych clanku
   pocty JEN prispevku vlozenych v poslednim tydnu
   a podle nich se clanky sestupne sesortuji.
Umim to samozrejme udelat bez poctu VSECH prispevku, 
takze mam k dispozici jen pocet prispevku za posledni tyden. 
Vcetne poctu VSECH prispevku ale nevim, nebot v jednom
selectu mam zaroven count vsech prispevku a zaroven i jen
count prispevku za posledni tyden. Napadlo mne spojit 
tabulku diskuse samu se sebou (a jednu z nich prejmenovat
napr. na posledni_tyden), udelat pro posledni_tyden 
podminku na datum v minulych 7 dnech a zgroupovat to.
    SELECT diskuse.clanek_id, 
    COUNT(diskuse.clanek_id) AS celkovy_pocet
    COUNT(posledni_tyden.diskuse_id) AS posledni_pocet
    FROM diskuse, diskuse AS posledni_tyden
    WHERE diskuse.clanek_id=posledni_tyden.clanek_id
    AND posledni_tyden.datum>'".Date("Y-m-d H:i:s", Time()-(7*24*3600))."' 
    GROUP BY diskuse.clanek_id
    ORDER BY posledni_pocet DESC, celkovy_pocet DESC, 
    LIMIT 5;
To mi vsak hazi nejake vysoke pocty -- napriklad ackoliv 
kdyz bych predpokladal, ze by melo byt celkovy_pocet=20
a posledni_pocet=3, tak mi to vraci jakoby jejich nasobek,
tedy celkovy_pocet = posledni_pocet = 60.
Takze mi tam jeste nekde pravdepodobne hapruje nejaky 
kartezky soucin, kde chybi jeste nejaka omezujici podminka.
Ale uz me vubec nenapada kde a co....
Diky,
Honza Tichy
    
    
    
Další informace o konferenci Test