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 :

Question de débutant.


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 20
    Points : 15
    Points
    15
    Par défaut Question de débutant.
    Bonjour à tous, c'est mon premier message mais surement pas mon dernier.

    Je vous explique mon problème.

    J'ai 4 tables:

    <<Table>>Bibliothèques
    {Clé primaire : NoBiblio}
    NoBiblio : INTEGER
    NomBiblio : VARCHAR(30)
    -----------------------

    <<Table>>Exemplaires
    {Clé primaire : NoExempl}
    NoExempl : INTEGER
    NoBiblio : INTEGER
    NoLivre : INTEGER
    ------------------------

    <<Table>>Livres
    {Clé primaire : NoLivre}
    NoLivre : INTEGER
    Titre : VARCHAR(100)
    NoAuteur : INTEGER
    ------------------------

    <<Table>>Auteurs
    {Clé primaire : NoAuteur}
    NoAuteur : INTEGER
    NomAuteur : VARCHAR(30)
    PrenomAuteur : VARCHAR(30)
    -------------------------

    -La table Exemplaires est liée à la table Bibliotheques par NoBiblio
    -La table Exemplaires est liée à la table Livres par NoLivre
    -La table Livres est liée à la table Auteurs par NoAuteur


    Je dois donc pour chaque livre, donner le nombre d'exemplaires détenu par chaque bibliotheque et afficherer :
    --le numero du livre,
    --son titre,
    --le nom de son auteur,
    --le nom de la bibliotheque,
    --le nombre d'exemplaires,
    --le tout trié par numéro de livre et nom de bibliothèque

    Présentement voici ma requête:

    SELECT e.NoLivre, Titre, NomAuteur, nomBiblio, COUNT(*) AS NOMBRE
    FROM Livres l, Exemplaires e, Bibliotheques b, Auteurs a
    WHERE e.NoBiblio = b.NoBiblio
    AND l.NoLivre = l.NoLivre
    AND l.NoAuteur = a.NoAuteur
    GROUP BY e.NoLivre, nomBiblio
    /

    (J'utilise ORACLE)
    Le truc c'est qu'elle me retourne : ORA-00979: N'est pas une expression GROUP BY

    Je ne comprends pas pourquoi... Si je comprends bien, le COUNT(*) compte tous les enregistrements retourné selon le GROUP BY(ici 2 colonnes).. alors logiquement pour chacun des enregistrement contenant les mêmes valeurs pour ces 2 colonnes cela devrais me retourner le nombre d'occurence..je ne vois pas le problème.

    Si quelqu'un pouvais m'aider ce serait bien parce que c'est pour un TP et je retrouve le même problème dans plusieurs numéros.

    Merci d'avance.

  2. #2
    mat.M
    Invité(e)
    Par défaut
    Quant tu utilises une clause de regroupement il faut inclure les tables que l'on souhaite afficher dans le SELECT.
    Il faut inclure dans le GROUP BY la table Auteurs.
    Aide du MSDN.

    The GROUP BY clause specifies one or more columns used to group rows returned by the query. Columns referenced in the SQL SELECT statement list, except for aggregate expressions, must be included in the GROUP BY clause.

    Ce qui semblent logique sinon tu vas avoir une correspondance "dans le vide"
    Une requête SQL c'est afficher une sorte de tableau lignes par colonnes, en quelque sorte et il faut que chaque cellule du tableau ait une correspondance apportée par la jointure

    Dans la requête que tu donnes tu essaies de regrouper e.NoLivre, Titre mais pas NomAuteur puisque le GROUP BY ne porte pas sur Auteurs

  3. #3
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 20
    Points : 15
    Points
    15
    Par défaut
    Oui sa fonctionne, merci!
    J'avou que c'est logique puisque le selct se fait sur plus qu'une table mais il me semble que j'ai deja fait cela sans être obligé de spécifier tous les champs dans le group by. Encore merci!

  4. #4
    mat.M
    Invité(e)
    Par défaut
    Eh bien de rien par contre j'avais quelques doutes sur le SELECT COUNT (*)

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

Discussions similaires

  1. Réponses: 13
    Dernier message: 23/06/2005, 10h56
  2. question de débutant sur les objets
    Par boucher_emilie dans le forum ASP
    Réponses: 3
    Dernier message: 06/08/2004, 10h51
  3. [MFC] Quelques questions de débutant...
    Par Sephi dans le forum MFC
    Réponses: 4
    Dernier message: 20/02/2004, 17h25
  4. Questions de débutant
    Par J-P-B dans le forum XMLRAD
    Réponses: 12
    Dernier message: 24/07/2003, 15h19
  5. [HyperFile] 2 questions de débutant
    Par khan dans le forum HyperFileSQL
    Réponses: 2
    Dernier message: 29/04/2002, 23h18

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