Bonjour,
Je ne comprends pas pourquoi il est obligatoire d'ajouter dans la clause GROUP BY toutes les colonnes du SELECT lorsque la clé primaire suffirait.
Exemple: J'ai une table Clients et une table Ordres (synonyme de transaction dans ce cas). Je désire obtenir la somme des ordres de chaque client ainsi que son prénom.
Cependant le résultat de cette requête est faux. Si j'ai deux clients prénommé Albert, le résultat de cette requête groupera les lignes des clients ayant le même prénom. Jusqu'ici je comprends, c'est assez normal.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SELECT Cli.Prenom, SUM(Ord.Montant) FROM Clients Cli INNER JOIN Ordres Ord ON Cli.Num_cli = Ord.Num_cli GROUP BY Cli.Prenom;
Pour rendre cette requête correcte, il faudrait grouper aussi par la clé primaire comme ceci:
Mais pourquoi on ne pourrait pas écrire cette requête de cette façon:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SELECT Cli.Prenom, SUM(Ord.Montant) FROM Clients Cli INNER JOIN Ordres Ord ON Cli.Num_cli = Ord.Num_cli GROUP BY Cli.Prenom, Cli.Num_cli;
En effet je trouve que de cette façon ça devrait fonctionner. Mais je reçois bien une erreur ORA-00979: n'est pas une expression GROUP BY.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SELECT Cli.Prenom, SUM(Ord.Montant) FROM Clients Cli INNER JOIN Ordres Ord ON Cli.Num_cli = Ord.Num_cli GROUP BY Cli.Num_cli;
D'avance merci beaucoup et meilleures salutations.
Partager