Autor Zpráva
Gecko
Profil *
Zdravím dnes podruhé,
řeším takový logický problém:
Mám tabulku, kde jsou fotografie, které lidé mohou hodnotit - matice, která se používá pro výpočet hodnocení je (ratesum / ratenum) (součet / počet).
Do této tabulky se ukládá i ID profilu, kterému fotky patří.
Tak a teď řeším výpis. Kolega mi sestavil kód, který vypisuje profily s nejlepším hodnocením:

$query=DB::query("SELECT u.id,u.username,p.loginid,p.ratesum,p.ratenum
                          FROM `"._mysql_prefix . "-photo` p
                          LEFT JOIN `" . _mysql_prefix . "-users` u
                          ON u.id = p.loginid 
                          WHERE p.ratenum!=0 ORDER BY round(ratesum / ratenum) DESC LIMIT ".$limit);
                          
    while ($item = DB::row($query)){

    /* jDanek Ratting System */
    $ratting="";
    if ($item['ratesum'] == 0 && $item['ratenum'] == 1){$ratting = 1;}
    else{
    $tmp_ratting = (($item['ratesum'] / $item['ratenum'])/20);
    $ratting = round(($tmp_ratting*2), 0)/2;
    }
    
    /* --- Avatar --- */

    $avatar="<img src='"._getAvatar($item["id"], true)."' alt='Miss ".$item["username"]."' class='avatar' />";        
    $result.="<div class='blok'>
                <a class='link' href='miss-".strtolower($item['username'])."'>".$item["username"]."</a>
                <a href='miss-".strtolower($item['username'])."'>".$avatar."</a>
                    <div class='mini-star-invisible' title='Hodnocení: ".$ratting." z 5'>
                        <div class='mini-star-".str_replace(".","-",$ratting)." mini-star'></div>
                    </div>
              </div>";
    
}

Jenomže je tu chyba v tom, že SQL výpíše profil klidně 2x. Logicky primárně filtruje podle hodnocení fotek.

Rád bych se zeptal, jak omezit výpis pouze na jeden profil. Ani jednoho nenapadá, jak na to :(.

Díky
Someone
Profil
Na konec dotazu Mezi WHERE a ORDER BY přidej: GROUP BY p.loginid
Gecko
Profil *
Za mě i kolegu děkujem :) (taková kravina)
jDanek
Profil *
Someone: To mě nenapadlo... Díky

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: