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

Langage SQL Discussion :

Group by et count : une seule ligne renvoyée


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2006
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2006
    Messages : 985
    Par défaut Group by et count : une seule ligne renvoyée
    Bonjour,
    J'ai cette requête,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT t.id_tourisme as album_id, t.libelle_tourisme as libelle_album, COUNT(*) as nb_photos FROM types_tourisme t
    LEFT JOIN galerie_photos gp ON gp.album_id = t.id_tourisme
    GROUP BY gp.album_id
    ORDER BY t.libelle_tourisme
    Je souhaite à coté de chaque libelle_album, le nombre de photos associées. Mais ceci me retourne plutot le libellé du premier album et le nombre total des albums. Je n'ai donc ni la liste des autres albums, ni le nombre de photos à chaque album.

    Merci d'avance...

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Le count doit s'appliquer à quelque chose qui te permet de repérer ce que tu veux compter, par exemple la clé primaire de la table galerie_photos (en supposant qu'un enregistrement de la table galerie_photos corresponde à une photo)
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     SELECT t.id_tourisme as album_id, t.libelle_tourisme as libelle_album, COUNT(gp.id) as nb_photos FROM types_tourisme t
    LEFT JOIN galerie_photos gp ON gp.album_id = t.id_tourisme
    GROUP BY gp.album_id
    ORDER BY t.libelle_tourisme
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2006
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2006
    Messages : 985
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT t.libelle_tourisme AS libelle_album, COUNT(gp.id_photo) AS nb_photos FROM types_tourisme t
    LEFT JOIN galerie_photos gp ON gp.album_id = t.id_tourisme
    GROUP BY gp.album_id
    ORDER BY t.libelle_tourisme
    Résultat
    libelle_album nb_photos
    Ecotourisme 0
    Je ne vois pas les autres libellés.

    Merci d'avance...

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2006
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2006
    Messages : 985
    Par défaut
    Citation Envoyé par Celira Voir le message
    Le count doit s'appliquer à quelque chose qui te permet de repérer ce que tu veux compter, par exemple la clé primaire de la table galerie_photos (en supposant qu'un enregistrement de la table galerie_photos corresponde à une photo)
    Merci.

  5. #5
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    J'ai un peu perdu le fil : ça fonctionne ou pas ?
    Si ça ne fonctionne toujours pas, il faudrait nous donner les structures des tables, histoire qu'on sache où se trouve quoi.

    Si ça fonctionne, un petit clic sur
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  6. #6
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2006
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2006
    Messages : 985
    Par défaut
    Citation Envoyé par Celira Voir le message
    J'ai un peu perdu le fil : ça fonctionne ou pas ?
    Ça fonctionne partiellement car la requête me déjà un album et le nombre de photos dans cet album.
    libelle_album nb_photos
    Ecotourisme 0
    Mais je ne vois pas les autres albums même comme tous ne possèdent pas encore de photos. On devrait avoir la liste de tous les albums et à coté de chaque album, le nombre de photos dedans.


    Citation Envoyé par Celira Voir le message
    il faudrait nous donner les structures des tables, histoire qu'on sache où se trouve quoi.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
     --
    -- Structure de la table `galerie_photos`
    --
     
    CREATE TABLE IF NOT EXISTS `galerie_photos` (
      `id_photo` int(11) NOT NULL AUTO_INCREMENT,
      `album_id` int(11) NOT NULL,
      `legende` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
      `fichier` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
      PRIMARY KEY (`id_photo`),
      KEY `album_id` (`album_id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
     
    --
    -- Contenu de la table `galerie_photos`
    --
     
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `types_tourisme`
    --
     
    CREATE TABLE IF NOT EXISTS `types_tourisme` (
      `id_tourisme` int(11) NOT NULL AUTO_INCREMENT,
      `libelle_tourisme` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
      `contenu_tourisme` text COLLATE utf8_unicode_ci NOT NULL,
      PRIMARY KEY (`id_tourisme`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=9 ;
     
    --
    -- Contenu de la table `types_tourisme`
    --
     
    INSERT INTO `types_tourisme` (`id_tourisme`, `libelle_tourisme`, `contenu_tourisme`) VALUES
    (1, 'Ecotourisme', ''),
    (2, 'Tourisme réligieux', ''),
    (3, 'Tourisme culturel', ''),
    (4, 'Tourisme d''affaire', ''),
    (5, 'Tourisme d''agrément', ''),
    (6, 'Tourisme balnéaire', ''),
    (7, 'Tourisme cynégétique', ''),
    (8, 'Safari', '');
     
    --
    -- Contraintes pour les tables exportées
    --
     
    --
    -- Contraintes pour la table `galerie_photos`
    --
    ALTER TABLE `galerie_photos`
      ADD CONSTRAINT `galerie_photos_ibfk_1` FOREIGN KEY (`album_id`) REFERENCES `types_tourisme` (`id_tourisme`) ON DELETE CASCADE ON UPDATE CASCADE;
    Merci d'avance...

  7. #7
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Bizarre, ça devrait fonctionner... Juste pour le test, tu peux ajouter la colonne groupante dans la requête :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT gp.album_id, t.libelle_tourisme AS libelle_album, COUNT(gp.id_photo) AS nb_photos 
    FROM types_tourisme t
    LEFT JOIN galerie_photos gp ON gp.album_id = t.id_tourisme
    GROUP BY gp.album_id
    ORDER BY t.libelle_tourisme

    Tu exécutes cette requête directement en base via PhpMyadmin ou un autre outil du genre ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 28/02/2014, 17h07
  2. group by sur une seule ligne
    Par roland34 dans le forum Requêtes
    Réponses: 2
    Dernier message: 30/01/2012, 16h03
  3. Récupérer une seule ligne par groupe
    Par David55 dans le forum Langage SQL
    Réponses: 8
    Dernier message: 30/12/2010, 19h59
  4. Comment n'afficher qu'une seule ligne par sous-groupe
    Par mondaying dans le forum Langage SQL
    Réponses: 3
    Dernier message: 20/01/2010, 23h25
  5. [debutant]Récupération d'une seule ligne d'un groupe
    Par iza76 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 25/01/2008, 09h25

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