Ma requete count me donne les mauvais résultats
Marc_3612 -
Bonjour,
Je ne sais pas si ça viens de mon code ou directement de ma requête sql mais je n'arrive pas a avoir les bon résultats sur un count.
Pour un peu plus de contexte, j'essaye de faire de la pagination pour un système de recherche (méthode toxi) et pour ça je dois compter le nombre d'images contenant (au pif) les tag_ids 1,2,3 ect et pour ensuite les grouper (image_id) pour ne pas avoir de doublons
la table relation :
le code
$isql = "SELECT rel_id,image_name FROM images_relations
INNER JOIN images ON image_id = rel_image_id
GROUP BY rel_image_id HAVING";
$count = 'SELECT COUNT(*) AS nb FROM images_relations GROUP BY rel_image_id HAVING';
$nb = 0;
foreach($req as $r):
if($nb > 0){
$isql.= " AND ";
$count.= " AND ";
}
$tag_id = intval($r->tag_id);
$isql.= " SUM(rel_tag_id=$tag_id)";
$count.= " SUM(rel_tag_id=$tag_id)";
$nb++;
endforeach;
$isql.=' ORDER BY rel_image_id DESC';
$im = $DB->query($isql);
$count = $DB->query($count);
var_dump($count);
Pourriez vous m'aider ?
Merci.Windows / Firefox 105.0
3 réponses
-
Bonjour,
Pour commencer, évite d'utiliser le même nom de variable pour y mettre différentes choses...
$count = $DB->query($count);
$count .. c'est ta requête SQL ( une string) ... et tu utilises cette même variable pour y stocker le résultat de la requête..
Ensuite,
Fais donc un var_dump de ta requête SQL ( la string ) puis teste la directement dans ta bdd ( via phpmyadmin) et vérifie que tu obtiens bien ce que tu veux.. mais j'en doute.. car je ne vois pas ce que vient faire ton "SUM" dans cette requête...
-
Je viens de vérifier et effectivement SUM sert a additionner les valeurs et pas les lignes... j'ai l'air vraiment d'un con
Je comprends pas la première requête me donnes les bon résultats. C'est de la chance ou je dois revoir cette requête aussi ?
-
Bon je ne suis plus sur de rien
pour la requete count je pense partir sur un WHERE rel_tag_id IN ('tag1', 'tag2', 'tag3'); je vais donc probablement revoir tout monde code.
Est ce que je suis sur la bonne voie ?
