Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 2 sur 2
  1. #1
    Membre du Club
    Profil pro
    informatique
    Inscrit en
    novembre 2009
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : informatique

    Informations forums :
    Inscription : novembre 2009
    Messages : 153
    Points : 51
    Points
    51

    Par défaut Création de vue

    Bonjour a tous , je cherche a crée une vue avec mes tables source que voici:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    SQL> DESC course ;
     Name					   NULL?    Type
     ----------------------------------------- -------- ----------------------------
     NUMC					   NOT NULL NUMBER(10)
     NOMC					   NOT NULL CHAR(40)
     DATEC						    DATE
     NUMV						    NUMBER(38)
     PRIX						    FLOAT(63)
     
    SQL> DESC resulat ;
     Name					   NULL?    Type
     ----------------------------------------- -------- ----------------------------
     NUMC					   NOT NULL NUMBER(10)
     NUMA					   NOT NULL NUMBER(38)// numero athlete
     RANG						    NUMBER(38)
    ma vue doit comporter les attribut suivant:
    numa,numv, datec,nbParticipant

    voici la requete que j'ai ecrit mais qui ne marche malheureusement pas:
    Code :
    1
    2
    3
    4
    CREATE materialized VIEW v(nomAthlete,nomVille,iddate,nbParticipant)
     build immediate
     refresh ON commit
     AS SELECT noma,numv,datec, sum(r.numa) FROM  course c,resulat r, athlete a  WHERE c.numc=r.numc AND a.numa=r.numa ;
    voici l'erreur que j'obtient:
    Code :
    1
    2
    ERROR at line 1:
    ORA-00937: NOT a single-GROUP GROUP FUNCTION
    si quelqu'un a une idée du probleme

    remarque: nbparticipant: est le nombre d'athlete ayant participé a une course

  2. #2
    Membre habitué
    Inscrit en
    septembre 2010
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : septembre 2010
    Messages : 74
    Points : 115
    Points
    115

    Par défaut

    Salut toi,

    Déjà pour commencer ton problème n'a rien à voir avec la création d'une vue. Ton problème est un problème de requête. Tu n'arrives pas à écrire la requête qui te permettra de créer ta vue. Donc, avant d'essayer de créer ta vue, essaye de créer la requête qui définiera ta mview.

    Ensuite, essaie de poster tes CREATE TABLE et un petit set de données pour que nous puissions tester. Dans ta requête, tu fais mention de la table athlete alors que nulle part nous voyons sa structure. Aussi, dans ton select tu as NOMA, mais je ne vois pas de quel table ce champ vient.

    Si tu veux compter le nombre de participant, je ne comprend pas pourquoi tu fais un SUM. La fonction pour compter est logiquement COUNT().

    Le message d'erreur est très clair. Tu n'as pas de GROUP BY dans ta requête. Si tu veux compter les éléments d'un groupe (en l'occurence une course), tu dois définir ce "groupe". Pour les JOINtures, la syntaxe ANSI est plus "jolie" et plus lisible... Peut-être la requête suivante t'aidera??

    Code :
    1
    2
    3
    4
    5
    6
    7
     
    SELECT r.noma, c.numv, c.datec, COUNT(r.numa)
      FROM course c 
     INNER JOIN resultat r ON r.numc = c.numc 
     INNER JOIN athlete a ON a.numa = r.numa
    GROUP BY r.noma, c.numv, c.datec
    ;

    Bon week-end,

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •