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

Firebird Discussion :

COUNT et jointure


Sujet :

Firebird

  1. #1
    Fxg
    Fxg est déconnecté
    Membre éclairé
    Homme Profil pro
    ingénieur financier
    Inscrit en
    Septembre 2003
    Messages
    510
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : ingénieur financier

    Informations forums :
    Inscription : Septembre 2003
    Messages : 510
    Points : 837
    Points
    837
    Par défaut COUNT et jointure
    Bonjour,

    J'ai deux tables livres : titre , num_auteur

    et auteurs : num_auteur, nom_auteur

    Je veux afficher la liste des auteurs avec le nombre de livres qu'ils ont écrits.
    Quand je fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT  L.Num_auteur, count(L.num_auteur)
    FROM Livres L
    group by L.Num_auteur
    j'obtiens bien :
    num_auteur count
    1 2
    2 1

    mais je voudrais :
    nom_auteur count
    hugo 2
    zola 1
    stendhal 4

    j'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT  L.Num_auteur, count(L.num_auteur), a.nom_auteur
    FROM Livres L
    LEFT JOIN auteurs A ON L.num_auteur=A.num_auteur
    group by L.Num_auteur
    j'obtiens une erreur (sous IB Expert)
    Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause).

    Merci de m'aider à faire progresser mes faibles connaissances en SQL.

  2. #2
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 784
    Points : 5 915
    Points
    5 915
    Par défaut
    Bonjour,
    Citation Envoyé par Fxg Voir le message
    j'obtiens une erreur (sous IB Expert)
    Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause).

    Merci de m'aider à faire progresser mes faibles connaissances en SQL.
    Et progresser en compréhension de la langue anglaise ?

    Traduit cela donne :
    Expression incorrecte dans la liste de sélection (non contenue dans une fonction d'agrégation ni dans la clause GROUP BY).
    Plus explicitement une colonne de la clause select ne fait pas partie d'une fonction d'agrégation(SUM, AVG, MIN, MAX, COUNT) ni de la clause group by.
    Il faut donc compléter votre requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT
       L.Num_auteur, a.nom_auteur, count(L.num_auteur)
    FROM Livres L
    LEFT JOIN auteurs A ON L.num_auteur=A.num_auteur
    group by L.Num_auteur, a.nom_auteur
    Cela dit, si on considère qu'un livre est écrit par au moins un auteur (cad qu'il n'est pas inconnu), on peut remplacer votre jointure externe gauche par une jointure interne, on obtient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT
       L.Num_auteur, a.nom_auteur, count(L.num_auteur)
    FROM Livres L
    INNER JOIN auteurs A ON L.num_auteur=A.num_auteur
    group by L.Num_auteur, a.nom_auteur
    Pour des explications détaillées sur les jointures, je vous renvoie à ce cours de Frédéric BROUARD sur le sujet : http://sqlpro.developpez.com/cours/sqlaz/jointures/
    Philippe.

  3. #3
    Fxg
    Fxg est déconnecté
    Membre éclairé
    Homme Profil pro
    ingénieur financier
    Inscrit en
    Septembre 2003
    Messages
    510
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : ingénieur financier

    Informations forums :
    Inscription : Septembre 2003
    Messages : 510
    Points : 837
    Points
    837
    Par défaut
    Merci Philippe.

    Pour l'anglais la traduction ne vaut pas compréhension.

    Je me replonge dans la doc SQL, (pas dans le harrap's)

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

Discussions similaires

  1. select count avec jointure, en récupérant les 0
    Par littlewings dans le forum Langage SQL
    Réponses: 2
    Dernier message: 17/07/2008, 11h58
  2. [SQL] Count sur jointure
    Par oim dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 21/01/2008, 16h18
  3. Problème de count dans jointure
    Par metfan dans le forum Requêtes
    Réponses: 2
    Dernier message: 07/08/2007, 09h58
  4. [MySQL 4.1] Count sur jointure avec null
    Par Arnard dans le forum Requêtes
    Réponses: 6
    Dernier message: 16/07/2007, 09h38
  5. Réponses: 3
    Dernier message: 08/11/2006, 23h04

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