Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/01/2008, 18h30   #1
Membre à l'essai
 
Inscription : avril 2005
Messages : 200
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 200
Points : 24
Points : 24
Par défaut Over Partition By - Doublon

Bonjour,

voici mon souci:

j'ai une table A:
Code :
1
2
3
nom bonbon
toto  10
toto  15
et une table B:
Code :
1
2
3
nom note
toto 2
toto 8
je souhaite sommer les notes présent dans la table B tout en récupérant la somme des bonbon dans la table A.

j'ai donc fait:

Code :
1
2
3
4
5
SELECT B.NOM,
         SUM(B.NOTE) OVER PARTITION BY (B.NOM),
         SUM(A.BONBON) OVER PARTITION BY (A.NOM)
         FROM A,B
         WHERE A.NOM=B.NOM
mais ca me double les sommes:
sum notes=20
sum bonbon=50

le probleme semble etre au niveau de la jointure,
une idéee please?
zizou771 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2008, 20h27   #2
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 319
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 319
Points : 5 837
Points : 5 837
Et pour quoi ça ne nous étonne pas ?
T'a essayé de voir que ça donne
Code :
1
2
3
4
 
SELECT a.*, b.*
  FROM a,b
WHERE a.nom = b.nom
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2008, 09h47   #3
Responsable Business Intelligence
 
Avatar de kalyparker
 
Femme
Consultant en Business Intelligence
Inscription : janvier 2007
Messages : 1 192
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence

Informations forums :
Inscription : janvier 2007
Messages : 1 192
Points : 2 564
Points : 2 564
Hello,
A mon avis tu peux faire ça comme ça :
Code :
1
2
3
4
5
6
7
SELECT b.nom, sum(b.note)
FROM B
GROUP BY nom
union
SELECT a.nom, sum(a.bonbon)
FROM A
GROUP BY nom
kalyparker est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2008, 10h01   #4
Membre à l'essai
 
Inscription : avril 2005
Messages : 200
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 200
Points : 24
Points : 24
ben avec un union j'aurai pas les bonbon+les notes sur la meme ligne!
je ne trouve pas de moyen
zizou771 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2008, 10h09   #5
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 319
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 319
Points : 5 837
Points : 5 837
Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
SQL> SELECT a.*, b.*
  FROM a,b
WHERE a.nom = b.nom
  2    3    4  ;
 
NOM                      BONBON NOM                        NOTE
-------------------- ---------- -------------------- ----------
toto                         10 toto                          2
toto                         15 toto                          2
toto                         10 toto                          8
toto                         15 toto                          8
Avant les analytiques il y a les jointures à apprendre
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2008, 10h14   #6
Membre à l'essai
 
Inscription : avril 2005
Messages : 200
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 200
Points : 24
Points : 24
ben oui y a bien le double de réponse, c justement mon problème je ne souhaite pas le double! je connais les jointures!! c pour ca ke je demande s'il y a un moyen de contourner cela.
zizou771 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2008, 10h21   #7
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 319
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 319
Points : 5 837
Points : 5 837
Citation:
Envoyé par zizou771 Voir le message
ben oui y a bien le double de réponse, c justement mon problème je ne souhaite pas le double! je connais les jointures!! c pour ca ke je demande s'il y a un moyen de contourner cela.
Non tu ne le connais pas ! C'est justement ce que ta question montre.
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2008, 10h22   #8
Responsable Business Intelligence
 
Avatar de kalyparker
 
Femme
Consultant en Business Intelligence
Inscription : janvier 2007
Messages : 1 192
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence

Informations forums :
Inscription : janvier 2007
Messages : 1 192
Points : 2 564
Points : 2 564
Pour mettre tout sur la même ligne :
Code :
1
2
3
4
5
6
7
8
9
10
SELECT C.nom, C.note, D.bonbon
FROM 
(SELECT b.nom, sum(b.note) note
FROM B
GROUP BY nom) C,
(
SELECT a.nom, sum(a.bonbon) bonbon
FROM A
GROUP BY nom) D
WHERE C.nom = D.nom
voilou
kalyparker est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2008, 18h26   #9
Membre à l'essai
 
Inscription : avril 2005
Messages : 200
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 200
Points : 24
Points : 24
tks
zizou771 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h55.


 
 
 
 
Partenaires

Hébergement Web