Ma requete count me donne les mauvais résultats

Fermé
Marc_3612 - 10 oct. 2022 à 11:00
 Marc_3612 - 10 oct. 2022 à 12:00

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

A voir également:

3 réponses

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
10 oct. 2022 à 11:06

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...


0

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 ?

0

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 ?

0