简体   繁体   中英

MySql query to select one image

I need to select one image path from db for one row with an external key, but I have many images for that external key 'id_ext'.

This is my php function code:

function oferte_speciale() {

    $sql="SELECT t1.*, t2.*, t3.*,t4.*,t5.*
            FROM anunturi t1 
            INNER JOIN tip_proprietate t2 ON t1.tip = t2.id_prop
            INNER JOIN anunt_preturi t3 ON t1.id_anunt = t3.ext
            INNER JOIN anunturi_images t5 ON t1.id_anunt = t5.id_ext ORDER BY `sort` DESC LIMIT 1
            INNER JOIN tranzactie t4 ON t1.tranzactie = t4.id_tranzactie
            WHERE t1.special=1 ORDER BY `data` DESC LIMIT 14" ; 




        $stmt = $this->dbh->prepare($sql);
        $stmt->execute();

        foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $result) 
        {
            $pret=strlen($result['pret_normal']);
            if($pret==4) $pretul=substr($result['pret_normal'], 0, 1).".".$pretul=substr($result['pret_normal'], 1, 4);
            if($pret==5) $pretul=substr($result['pret_normal'], 0, 2).".".$pretul=substr($result['pret_normal'], 2, 5);
            if($pret==6) $pretul=substr($result['pret_normal'], 0, 3).".".$pretul=substr($result['pret_normal'], 3, 6);
            if($pret==7) $pretul=substr($result['pret_normal'], 0, 2).".".$pretul=substr($result['pret_normal'], 2, 4)
            .".".$pretul=substr($result['pret_normal'], 4, 7);
            if($pret==8) $pretul=substr($result['pret_normal'], 0, 2).".".$pretul=substr($result['pret_normal'], 3, 5)
            .".".$pretul=substr($result['pret_normal'], 5, 8);
            if($pret==9) $pretul=substr($result['pret_normal'], 0, 3).".".$pretul=substr($result['pret_normal'], 3, 6)
            .".".$pretul=substr($result['pret_normal'], 6, 9);
            if($result['tranzactie']=='2') $luna="/luna"; else $luna="";
            $special[]='
            <li>
              <div class="image">
              <img src="'.$result['den_imag'].'" alt="" />
              <span><a href="#" class="decor">'.$result['den_tranzactie'].' '.$result['den_prop'].' '.$pretul.' €'.$luna.'</a></span>
              </div>
            </li>';
        }
        return $special;
}

How can I fix it? Thanks in advance!

You need to use GROUP BY and need to give LIMIT as 1.like

WHERE t1.special=1 ORDER BY `data` GROUP BY 't1.ext' DESC LIMIT 1" ; 

Where id_ext will be the auto increment fields in your main table t1

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM