IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

Problème de requête


Sujet :

Requêtes MySQL

  1. #1
    Membre du Club
    Femme Profil pro
    Presque retraitée
    Inscrit en
    Septembre 2008
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Presque retraitée
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Septembre 2008
    Messages : 75
    Points : 66
    Points
    66
    Par défaut Problème de requête
    Bonsoir,

    Cela fait plusieurs jours que j'essaie de trouver la bonne requête à faire (qui est certainement très simple), et je me décide à solliciter votre aide.

    J'ai, d'une part, la table "sbbsouscat" (sous-catégories) qui contient, entre autres :

    - id
    - nom
    ...

    et, d'autre part, la table "sbbproduit" (produits) qui contient, entre autres :

    - id
    - sid (= id table sbbsouscat)
    - libelle
    ...

    Je voudrais afficher une liste des sous-catégories, avec, pour chacune d'elles, entre parenthèses, le nombre de produits qu'elle comprend. Ce qui devrait donner, par exemple : Produits de senteur (14)

    Je sais faire la requête pour extraire, lister et afficher les sous-catégories de la table "sbbsouscat" mais je ne sais pas comment faire pour que le nombre de produits extrait de la table "sbbproduit" vienne se placer auprès de chaque catégorie.

    Merci par avance de votre coup de main.

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Points : 1 357
    Points
    1 357
    Par défaut
    Bonjour,

    Ceci devrait pouvoir faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php 
      $sql = 'SELECT count(p.*) AS nombre, sc.nom
              FROM sbbproduit p
              JOIN sbbsouscat sc ON sc.id = p.sid
              GROUP BY p.sid';
    ?>

  3. #3
    Membre du Club
    Femme Profil pro
    Presque retraitée
    Inscrit en
    Septembre 2008
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Presque retraitée
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Septembre 2008
    Messages : 75
    Points : 66
    Points
    66
    Par défaut
    Bonjour,

    Merci pour cette réponse que j'ai essayée, et j'ai eu pour résultat :

    "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '*) AS nombre, sc.nom FROM sbbproduit p JOIN sbbsouscat sc ON' at line 1"...

  4. #4
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Saluton,
    Je ne vois aucune erreur de syntaxe dans la requête de jeca.
    Tu as du faire une erreur de transcription.
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  5. #5
    Membre du Club
    Femme Profil pro
    Presque retraitée
    Inscrit en
    Septembre 2008
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Presque retraitée
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Septembre 2008
    Messages : 75
    Points : 66
    Points
    66
    Par défaut
    Bonjour,

    J'ai fait un copier-coller, je n'ai donc normalement pas pu faire d'erreur.

    J'ai commencé par vouloir tester la requête et j'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $sql = 'SELECT count(p.*) AS nombre, sc.nom
              FROM sbbproduit p
              JOIN sbbsouscat sc ON sc.id = p.sid
              GROUP BY p.sid';
    $req = mysql_query($sql) or die (mysql_error());
    Ai-je mal fait ?

  6. #6
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Non, décidémment, non, je ne vois rien qui puisse expliquer le message d'erreur.
    As-tu testé la requête sous PMA (PhPMyAdmin) ?
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  7. #7
    Membre du Club
    Femme Profil pro
    Presque retraitée
    Inscrit en
    Septembre 2008
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Presque retraitée
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Septembre 2008
    Messages : 75
    Points : 66
    Points
    66
    Par défaut
    Bonsoir,

    Oui, j'avais testé sous PHPMyAdmin et le résultat était le même...

    Je viens de trouver l'erreur : une inversion de table. Au lieu d'écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $sql = 'SELECT count(p.*) AS nombre, sc.nom
              FROM sbbproduit p
              JOIN sbbsouscat sc ON sc.id = p.sid
              GROUP BY p.sid';
    Il fallait mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $sql = 'SELECT
    	count(libelle) AS nombre, sc.nom
              FROM sbbsouscat sc 
              JOIN sbbproduit p ON sc.id = p.sid
              GROUP BY sc.id';
    et cela fonctionne parfaitement.

    Encore merci pour vos réponses qui m'ont permis de trouver la solution...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 19
    Dernier message: 27/08/2003, 15h32
  2. problème de requête avec jointures
    Par tinhat dans le forum Requêtes
    Réponses: 7
    Dernier message: 11/08/2003, 10h33
  3. Problème de requètes concurentes
    Par Emmanuel.G dans le forum XMLRAD
    Réponses: 3
    Dernier message: 08/08/2003, 16h51
  4. Réponses: 2
    Dernier message: 16/07/2003, 14h40
  5. Problème dans requête avec count()
    Par BadFox dans le forum Requêtes
    Réponses: 3
    Dernier message: 08/07/2003, 18h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo