Bonjour,

J'ai lu sur le forum qu'il était possible de faire une requête sql avec un champ imaginaire, pas présent dans ma table.

Dans mon cas j'aimerai afficher les id des produits où le périmètre (area) est inférieur à ce qui est rentré par l'utilisateur :

Ma fonction :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
public static function getDist($lat1, $lng1, $lat2, $lng2, $area) {
        $query = 'SELECT DISTINCT ps_activiteproduct.id_product, (6366*ACOS(COS(RADIANS(' . $lat1 . '))*COS(RADIANS(' . $lat2 . '))*COS(RADIANS(' . $lng2 . ')-RADIANS(' . $lng1 . '))+SIN(RADIANS(' . $lat1 . '))*SIN(RADIANS(' . $lat2 . ')))) AS area
FROM  ps_activiteproduct, ps_activite
WHERE ps_activiteproduct.id_activite=ps_activite.id_activite
AND area <= ' . $area . '
ORDER BY area ASC';
        return Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($query);
    }
Mais j'ai cette erreur :

Unknown column 'area' in 'where clause'

SELECT DISTINCT ps_activiteproduct.id_product, (6366*ACOS(COS(RADIANS(47.218371))*COS(RADIANS(46.8208))*COS(RADIANS(-1.88706)-RADIANS(-1.553621))+SIN(RADIANS(47.218371))*SIN(RADIANS(46.8208)))) AS area
FROM ps_activiteproduct, ps_activite
WHERE ps_activiteproduct.id_activite=ps_activite.id_activite
AND area <= 12
ORDER BY area ASC


Merci d'avance.