OVH Cloud OVH Cloud

problème requete sql

6 réponses
Avatar
DEUTSCH
Bonjour,

Comment peut on faire dans une requète SQL pour ressortir un champ quand on
utilise une fonction d'agrégat, ici MAX(), sans mettre ce champ dans le
GROUP BY et sans effectuer de fonction d'agrégat.
Access met comme message d'erreur "vous avez essayer une requete ne
comprenant pas [nom du champ] comme fonction d'agrégat.

Merci

6 réponses

Avatar
Rv
Bonjour,

Je ne comprends pas votre question. Je lis une contradiction entre : "...
quand on utilise une fonction d'agrégat ..." et "...sans effectuer de
fonction d'agrégat...".
Pouvez-vous préciser!?

Rv

"DEUTSCH" a écrit dans le message de
news:
Bonjour,

Comment peut on faire dans une requète SQL pour ressortir un champ quand
on

utilise une fonction d'agrégat, ici MAX(), sans mettre ce champ dans le
GROUP BY et sans effectuer de fonction d'agrégat.
Access met comme message d'erreur "vous avez essayer une requete ne
comprenant pas [nom du champ] comme fonction d'agrégat.

Merci




Avatar
DEUTSCH
"Rv" a écrit dans le message de
news:
Bonjour,

Je ne comprends pas votre question. Je lis une contradiction entre :
"...

quand on utilise une fonction d'agrégat ..." et "...sans effectuer de
fonction d'agrégat...".
Pouvez-vous préciser!?

Rv



c'est vrai c'est une erreur de ma faute. le message d'erreur dit " vous avez
essayer d'executer une requete ne comprenant pas l'expression [champ] comme
une partie de la fonction d'agrégat.

J'ai besoin de sortir ce champ sans faire de regroupement dessus, et ca
access refuse.

Avatar
Rv
Re,

Sur le principe on peut sans problème écrire:

SELECT champ1, max(champ2)
FROM table1
GROUP BY champ1

Et champ2 ne fait pas parti de la fonction d'agrégat. Donc je dois être à
coté de la réponse attendue! Pouvez vous envoyer le texte SQL de la requête
si celle-ci n'est pas trop complexe (je n'ai pas beaucoup de temps ces
jours-ci!).

A+

Rv


"DEUTSCH" a écrit dans le message de
news:epZ3$

"Rv" a écrit dans le message de
news:
Bonjour,

Je ne comprends pas votre question. Je lis une contradiction entre :
"...

quand on utilise une fonction d'agrégat ..." et "...sans effectuer de
fonction d'agrégat...".
Pouvez-vous préciser!?

Rv



c'est vrai c'est une erreur de ma faute. le message d'erreur dit " vous
avez

essayer d'executer une requete ne comprenant pas l'expression [champ]
comme

une partie de la fonction d'agrégat.

J'ai besoin de sortir ce champ sans faire de regroupement dessus, et ca
access refuse.





Avatar
DEUTSCH
Non justement ma requete est du genre
SELECT champ1, max(champ2), champ3
FROM table1
GROUP BY champ1

et la access refuse si je ne met pas champ3 dans mon group by, ou si je ne
fait pas de fonction d'agregat sur champ3
Avatar
Rv
Impossible avec cette formulation: comment regrouper sur champ1 et "sortir"
une valeur de champ3. Quelle valeur access choisira si on ne lui précise pas
une fonction d'agrégat car sur le principe il peut y en avoir plusieurs
(regroupement). Pour moi, c'est plus un pb d'analyse qu'un pb SQL!
Exemple

Champ1, Champ2, Champ3
1 2 2
1 4 3
1 4 7

Si on regroupe sur champ1 on obtient : 1
Si en plus on demande le max de champ2 on obtient : 1,4
Mais si on demande champ3 alors quelle est la valeur attendue: 2 ou 3 ou 7?

A+

Rv




"DEUTSCH" a écrit dans le message de
news:
Non justement ma requete est du genre
SELECT champ1, max(champ2), champ3
FROM table1
GROUP BY champ1

et la access refuse si je ne met pas champ3 dans mon group by, ou si je ne
fait pas de fonction d'agregat sur champ3




Avatar
DEUTSCH
Ce que je souhaite c'est ressortir la valeur du champ 3 qui est sur la meme
ligne que la valeur maximal du champ 2, et ce trié par rapport au champ 1 :
ex :

Champ1 Champ 2 Champ 3
1 10 8
1 8 4
1 12 5
1 9 7
2 3 6
2 6 1

Voila ce que je veux :

Champ 1 Champ 2 Champ 3
1 12 5
2 6 1

Et ca je n'y arrive pas. Le problème vient aussi qu'il peut y avoir
plusieurs champ3 différent pour des champ1 et des champs2 identiques.
Commet puis je faire alors pour ressortir La valeur minimale du champ3 pour
la valeur maximale du champ 2, et ce trié par le champ 1.

Merci de votrez aide