Précédent   Forum du club des développeurs et IT Pro > Bases de données > Oracle > Débuter
Débuter Forum d'entraide pour débuter avec Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 16/11/2012, 14h19   #1
sheridan08
Membre du Club
 
informatique
Inscription : novembre 2009
Messages : 114
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : informatique

Informations forums :
Inscription : novembre 2009
Messages : 114
Points : 46
Points : 46
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
sheridan08 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2012, 15h21   #2
amir.
Membre habitué
 
Inscription : septembre 2010
Messages : 74
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 74
Points : 115
Points : 115
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,
amir. est déconnecté   Envoyer un message privé Réponse avec citation 20
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 17h20.


 
 
 
 
Partenaires

Hébergement Web