blog actif depuis 774 jours.

retours d'expériences, codes sources, réflexions, humeurs... d'un webmaster

 

Jeu.

12

Juin

 
contexte :

2 tables jointes,
table_produits (id_produit (PK), id_categorie (FK), nom_produit)
table_categories (id_categorie (PK), nom_categorie)

On cherche à lister les catégories et pour chaque catégorie, récupérer le nombre de produits pour afficher, par exemple:
  • categorie 1 (2 produits)
  • categorie 2 (12 produits)
  • categorie 3 (0 produits)...

Mauvaise méthode
1 première requête de type
SELECT * FROM table_produits
on récupère l'id produit de chaque résultat (que l'on appellera par exemple id_res), et on fait une seconde requête de type
SELECT COUNT(*) FROM table_categorie WHERE id_produit=id_res.
Cette méthode fonctionne très bien. Seul inconvénient, on envoie une requête pour chaque produit. ce qui fait pour n produits n+1 requêtes.

Bonne méthode
On utilise le COUNT SQL avec la jointure
La requête est de type
SELECT table_categories.nom_categorie, COUNT(table_produits.id_produit) AS nombre_categories FROM table_categories LEFT JOIN table_produits ON table_categories.id_categorie=table_produits.id_categorie GROUP BY table_categories.id_categorie
La requête est un peu longue à écrire (il faut lister les champs que l'on veut récupérer, on ne peut pas mélanger * et COUNT(*)) mais on passe de n+1 requêtes à 1 requête (ce qui n'est pas négligeable avec n très grand)

Bookmark and Share

 

Commentaires

Aucun commentaire

 

Ajouter un commentaire

nom / pseudo :
e-mail :

(Votre e-mail ne sera ni exploité, ni divulgué.)

site (facultatif)
 

Webmaster depuis maintenant plus de 10 ans, j'ai créé ce blog pour publier mes retours d'expérience et parler du Web et du développement Web en général, mais aussi de plein d'autres choses...

romualb.com est sur Facebook
<Juillet 2010 
LunMarMerJeuVenSamDim
   01 02 03 04
05 06 07 08 09 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  

 

 

Referencement annuaire gratuit Annuaire carte postale blog,,personnel communiquer gratuit Paperblog : Les meilleurs actualités issues des blogs Classement de sites - Inscrivez le vôtre! Inscrivez-vous maintenant sur Viadeo Web Developement Blogs - BlogCatalog Blog Directory web counter