Page 1 sur 1

COUNT, INNER JOIN et GROUP BY

Posté : 07 oct. 2012, 17:38
par FranckW
Bonjour,

Grâce à votre aide mon problème de INNER JOIN est résolu, mais l'avancement de mes travaux me confronte à un autre problème.

Ma requête ci dessous fonctionne parfaitement.
	$req = "SELECT * FROM data INNER JOIN link ON link.id=data.id AND";
	$mots = explode(' ',$filtre);
	foreach($mots as $mot)
	{
		$req .= " query LIKE '%".$mot."%' AND";
	}
	$req .= " 1=1";
	$req .= " GROUP BY data.id";
	$requete = mysql_query($req);
Par contre pour la navigation de page en page, j'ai besoin de connaître le nombre d'enregistrement retourné par cette requête.
Je me lance donc avec la fonction COUNT ci-dessous afin que la variable $nblignes contienne le nombre de ligne :
	$query = "SELECT COUNT(*) FROM data INNER JOIN link ON link.id=data.id AND";
	$mots = explode(' ',$filtre);
	foreach($mots as $mot)
	{
		$query .= " query LIKE '%".$mot."%' AND";
	}
	$query .= " 1=1 ";
	$query .= " GROUP BY data.id";
	$numresultat = mysql_query($query);
	$numrow = mysql_fetch_row($numresultat);
	$nblignes = $numrow[0];
Mais cela retourne toujours la valeur "1".
Je tourne et retourne en rond, merci d'avance pour votre aide.
J'arrive à trouver mon résultat en rajoutant le code ci-dessous mais je ne trouve pas cela terrible.
        while($row = mysql_fetch_array($query)) {
	    $nblignes++;
		}

Re: COUNT, INNER JOIN et GROUP BY

Posté : 07 oct. 2012, 21:39
par piotrowski-s
salut,

regarde du côté de la fonction mysql_num_rows

Re: COUNT, INNER JOIN et GROUP BY

Posté : 08 oct. 2012, 09:42
par Mazarini
En fait dans le count est lié au "group by". Tu récupère donc le count() pour chaque identifiant.

La solution ci-dessus marche. Autrement il faudrait faire une requete différente pour compter le nombre d'identifiants différents.