0

外部キーを使用して 1 つの行に対して db から 1 つの画像パスを選択する必要がありますが、その外部キー 'id_ext' に対して多くの画像があります。

これは私のPHP関数コードです:

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;
}

どうすれば修正できますか?前もって感謝します!

4

1 に答える 1

0

GROUP BYLIMIT を 1.like として使用し、与える必要があります

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

id_extメインテーブルの自動インクリメントフィールドはどこにありますかt1

于 2013-10-30T12:05:59.460 に答える