1 Seule requête pour 5 count ?

Fermé
ant331 - 13 déc. 2013 à 16:58
 Mambo5 - 23 déc. 2013 à 16:23
Bonjour a tous,

Par souci d'optimisation et rien que ça, je me demandais si il ne valait pas mieux regrouper mes (5)COUNTs en 1 seule grosse requête.

Je m'explique, j'ai une page profile ou je récupère les infos du membres c'est a dire les amis,les fans,les commentaires,les favoris et les uploads...je fais ensuite un count (ID) pour récupéré le nombre de chaque table correspondant a l'ID du membre.

voici l'exemple:

 $sql ="SELECT COUNT(id)FROM fan WHERE user_to = '$id' ";
 $nb_fan = $DB->tcount($sql);
		    
		   
$sql ="SELECT COUNT(id) FROM friends WHERE id_to = '$id' OR id_from ='$id'   AND status ='1' ";
 $nb_friends = $DB->tcount($sql);
		    
			
$sql ="SELECT COUNT(id) FROM comments WHERE comment_user_id = '$id' ";
$nb_comments = $DB->tcount($sql);
		   
			
 $sql ="SELECT COUNT(id) FROM pics WHERE pics_user_id = '$id' ";
$nb_pics = $DB->tcount($sql);
		  
		  
$sql ="SELECT COUNT(id) FROM favoris WHERE fav_user_id = '$id' ";
$nb_fav = $DB->tcount($sql);




							
<li><a><strong>Images téléchargé :</strong> <?php echo intval($nb_pics);?></a></li>
<li><a><strong>Favoris :</strong> <?php echo intval($nb_fav);?></a></li>
<li><a><strong>Nombre de fan :</strong> <?php echo intval($nb_fan);?></a></a></li>
<li><a><strong>Nombre d'amis:</strong>  <?php echo intval($nb_friends);?></a></a></li>
<li><a><strong>Nombre de commentaires:</strong> <?php echo intval($nb_comments);?></a></a></li>


Donc voila, y a t-il moyen de faire ça en UNE seule grosse requête ? si oui comment procéder et est ce vraiment nécessaire ? le don de temps/performance est significatif ?

merci a ceux qui prendrons le temps de me répondre. Bonne journée.

5 réponses

francis0001 Messages postés 22 Date d'inscription jeudi 11 décembre 2008 Statut Membre Dernière intervention 23 décembre 2013 1
13 déc. 2013 à 19:30
As-tu un champ en commun qui te servira de jointure entre ces tables ?
0
up!
0
up
0
Jean_Jacques Messages postés 1040 Date d'inscription mercredi 30 avril 2008 Statut Membre Dernière intervention 1 août 2014 112
23 déc. 2013 à 15:15
Bonjour ant331,

Une requête UNION pourrait bien être la solution ?

https://doc.pcsoft.fr/fr-FR/?2034004&2034004


Cordialement
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bonjour,

Voici comment obtenir tous tes résultats en 1 requête, je te laisse l'adapter à ton code :
SELECT 
(SELECT COUNT(*) FROM table_1) AS nb_table_1,
(SELECT COUNT(*) FROM table_2) AS nb_table_2,
(SELECT COUNT(*) FROM table_3) AS nb_table_3
0