|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Membre à l'essai
![]() Inscription : janvier 2006 Messages : 120 ![]() |
Bonjour,
Je galère depuis un bon moment sur une requête qui me renvoit à chaque fois l'erreur : n'est pas une expression de groupe. Je suis Oracle 10g. J'ai essayé plusieurs solutions mais qui se sont avérées toutes infructueuses. Si quelqu'un peut m'aider ça serait avec grand plaisir. Ma requête est la suivante (ORA-00979): Code :
Code :
|
||||
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 638 ![]() |
bonjour,
Dans votre 1ere requête vous fait un group by mais oubliez de lui spécifier des colonnes de votre select qui ne sont soumis à aucun opérateur mathématique (avg, count, min, max, ..) Du coup il ne sait pas quoi faire avec les colonnes Box, QtDispo, Unit. Dans votre 2eme requête vous rajouter les alias de votre close select dans votre groupe by. Ceci ne peut pas marcher car les alias sont créé après l'execution de la clause group by. Ceci étant dit je ne comprend pas l'utilité de mettre dans votre clause select des sous-requete qui m'ont tout l'air de pouvoir remonter un résultat correct en passant par des jointures. Qu'essayez vous de faire avec cette requête ? |
|
|
00
|
|
|
#3 |
|
Membre à l'essai
![]() Inscription : janvier 2006 Messages : 120 ![]() |
Bonjour Punkoff,
Merci pour les précisions. En fait, l'emplacement qui porte l'alias Box et l'unité qui porte l'alias Unit sont dans deux tables différentes. Le but de ma requête est d'afficher des informations contenu dans la table HCQ_RESOURCE où je calcul l'age et la quantité disponible. Mais je voudrais afficher l'emplacement des ressources ainsi que leurs unités. Si je pars de ma première requête, comment puis la modifier pour ne plus avoir cette erreur ? Merci encore. |
|
|
00
|
|
|
#4 | ||
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 638 ![]() |
Je penses qu'il faut revoir entièrement votre requête, et pas ce focaliser sur cette erreur.
Sinon pour répondre à cette question, il faudrai mettre dans votre group by l'ordre de la sous-requete (et non seulement les alias), mais je ne suis pas sur que ca marche je ne connais pas oracle. Bref, je part du principe que vos table ont des relations de type 1-1, vu que vous n'avez rien spécifié : Code :
|
||
|
|
10
|
|
|
#5 |
|
Membre à l'essai
![]() Inscription : janvier 2006 Messages : 120 ![]() |
Merci Punkoff pour votre aide. Oui c'est bien une 1-1 entre mes tables.
J'ai testé la requête ça fonctionne. A l'avenir j'utiliserai plutôt l'ordre de la sous-requete et non pas les alias. Encore merci pour l'aide |
|
|
00
|
|
|
#6 | |
![]() ![]() |
Citation:
Au moment où le parser SQL lit le GROUP BY, il n'est pas encore passé dans le SELECT et ne connait donc pas les alias de colonnes que vous avez défini.
__________________
Email : http://scr.im/waldar |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com