Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

agregats et sous-requêtes

7 réponses
Avatar
toobs
Bonjour,

Je travaille sur la table suivante (simplifiée):

nom fournisseur; numéro de compte; montant
fourn1;cp1;14€
fourn1;cp1;34€
fourn1;cp2;40€
fourn2;cp2;20€
fourn2;cp3;15€
fourn3;cp4;10€

le but étant d'obtenir EN UNE SEULE REQUETE pour chaque fournisseur le
compte le plus important (et le montant correspondant), c'est à dire:
fourn1;cp1;48€
fourn2;cp2;20€
fourn3;cp4;10€

pourriez-vous m'aider?
merci d'avance

7 réponses

Avatar
Eric
Bonjour toobs,

T'es sur pour le fournisseur1 ? moi je dirai que c'est le compte cp2
avec un montant de 40 €

En adaptant le nom de la table et des champs,

SELECT NomF, NC, Montant
FROM LaTable as T1
WHERE Montant=(select max(montant)
from LaTable
where NomF=t1.NomF );

Bonjour,

Je travaille sur la table suivante (simplifiée):

nom fournisseur; numéro de compte; montant
fourn1;cp1;14€
fourn1;cp1;34€
fourn1;cp2;40€
fourn2;cp2;20€
fourn2;cp3;15€
fourn3;cp4;10€

le but étant d'obtenir EN UNE SEULE REQUETE pour chaque fournisseur le
compte le plus important (et le montant correspondant), c'est à dire:
fourn1;cp1;48€
fourn2;cp2;20€
fourn3;cp4;10€

pourriez-vous m'aider?
merci d'avance


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
toobs
et non c bien le compte cp1!
parce que justement, il faut sommer l'ensemble des opérations: 14 + 34 = 48
40!
c'était trop facile ;-)

en tout cas merci
je continue à chercher

"Eric" wrote:

Bonjour toobs,

T'es sur pour le fournisseur1 ? moi je dirai que c'est le compte cp2
avec un montant de 40 €

En adaptant le nom de la table et des champs,

SELECT NomF, NC, Montant
FROM LaTable as T1
WHERE Montant=(select max(montant)
from LaTable
where NomF=t1.NomF );

Bonjour,

Je travaille sur la table suivante (simplifiée):

nom fournisseur; numéro de compte; montant
fourn1;cp1;14€
fourn1;cp1;34€
fourn1;cp2;40€
fourn2;cp2;20€
fourn2;cp3;15€
fourn3;cp4;10€

le but étant d'obtenir EN UNE SEULE REQUETE pour chaque fournisseur le
compte le plus important (et le montant correspondant), c'est à dire:
fourn1;cp1;48€
fourn2;cp2;20€
fourn3;cp4;10€

pourriez-vous m'aider?
merci d'avance


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr




Avatar
Eric
re,

Ca , c'était pas dit et avec l'exemple fourni pas évident à voir ou
décrypter. Bon vais me creuser les méninges et réponse éventuelle (sans
garantie)
;-)

et non c bien le compte cp1!
parce que justement, il faut sommer l'ensemble des opérations: 14 + 34 = 48

40!


c'était trop facile ;-)
en tout cas merci
je continue à chercher

"Eric" wrote:


Bonjour toobs,

T'es sur pour le fournisseur1 ? moi je dirai que c'est le compte cp2
avec un montant de 40 €

En adaptant le nom de la table et des champs,

SELECT NomF, NC, Montant
FROM LaTable as T1
WHERE Montant=(select max(montant)
from LaTable
where NomF=t1.NomF );


Bonjour,

Je travaille sur la table suivante (simplifiée):

nom fournisseur; numéro de compte; montant
fourn1;cp1;14€
fourn1;cp1;34€
fourn1;cp2;40€
fourn2;cp2;20€
fourn2;cp3;15€
fourn3;cp4;10€

le but étant d'obtenir EN UNE SEULE REQUETE pour chaque fournisseur le
compte le plus important (et le montant correspondant), c'est à dire:
fourn1;cp1;48€
fourn2;cp2;20€
fourn3;cp4;10€

pourriez-vous m'aider?
merci d'avance


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr




--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr



Avatar
Jean-Louis Vergne
'lut,
Bon je sais que je suis hors sujet (en 2 requêtes) mais juste au cas où ...
Tu l'as sans doute déjà envisagé ça passe plutôt pas mal en 2 requêtes :

Requête1 :
SELECT Table1.Fournisseur, Table1.Compte, Sum(Table1.Montant) AS
SommeDeMontant
FROM Table1
GROUP BY Table1.Fournisseur, Table1.Compte;

Requête2 :
SELECT Requête1.Fournisseur, First(Requête1.Compte) AS PremierDeCompte,
Max(Requête1.SommeDeMontant) AS MaxDeSommeDeMontant
FROM Requête1
GROUP BY Requête1.Fournisseur;

Je lance requête 2 et j'obtiens :

Requête2 Fournisseur PremierDeCompte MaxDeSommeDeMontant
Fourn1 CP1 48
Fourn2 CP2 20
Fourn3 CP4 10


En 1 seule requête tu dis ... bigre ... je jette l'éponge ...
JLouis.


"toobs" a écrit dans le message de news:

Bonjour,

Je travaille sur la table suivante (simplifiée):

nom fournisseur; numéro de compte; montant
fourn1;cp1;14?
fourn1;cp1;34?
fourn1;cp2;40?
fourn2;cp2;20?
fourn2;cp3;15?
fourn3;cp4;10?

le but étant d'obtenir EN UNE SEULE REQUETE pour chaque fournisseur le
compte le plus important (et le montant correspondant), c'est à dire:
fourn1;cp1;48?
fourn2;cp2;20?
fourn3;cp4;10?

pourriez-vous m'aider?
merci d'avance


Avatar
dany2
Salut

Je ne suis pas spécialiste, mais je crois que les "requêtes analyse
croisée" existent pour cela. ("sommer" un champ par regroupement des
enregistrements identiques d'un autre champ)

Pas se casser la tête avec du code quand ce n'est pas indispensable...

A+



Bonjour,

Je travaille sur la table suivante (simplifiée):

nom fournisseur; numéro de compte; montant
fourn1;cp1;14€
fourn1;cp1;34€
fourn1;cp2;40€
fourn2;cp2;20€
fourn2;cp3;15€
fourn3;cp4;10€

le but étant d'obtenir EN UNE SEULE REQUETE pour chaque fournisseur le
compte le plus important (et le montant correspondant), c'est à dire:
fourn1;cp1;48€
fourn2;cp2;20€
fourn3;cp4;10€

pourriez-vous m'aider?
merci d'avance


Avatar
dany2

Salut

Je ne suis pas spécialiste, mais je crois que les "requêtes analyse
croisée" existent pour cela. ("sommer" un champ par regroupement des
enregistrements identiques d'un ou plusieurs autres champs)


Ah, j'oubliais possibilité d'ajouter un ou plusieurs critères MaxDom par
exemple dans un champ calculé ou pas et un ordre de tri...

Pas se casser la tête avec du code quand ce n'est pas indispensable...

A+



Dany2



Bonjour,

Je travaille sur la table suivante (simplifiée):

nom fournisseur; numéro de compte; montant
fourn1;cp1;14€
fourn1;cp1;34€
fourn1;cp2;40€
fourn2;cp2;20€
fourn2;cp3;15€
fourn3;cp4;10€

le but étant d'obtenir EN UNE SEULE REQUETE pour chaque fournisseur le
compte le plus important (et le montant correspondant), c'est à dire:
fourn1;cp1;48€
fourn2;cp2;20€
fourn3;cp4;10€

pourriez-vous m'aider?
merci d'avance




Avatar
toobs
Voilà ce que j'ai trouvé:

SELECT fournisseur, compte, montanttotal
FROM

(SELECT fournisseur, compte, Sum(montant) AS montanttotal
FROM table
GROUP BY fournisseur, compte)

WHERE fournisseur & montanttotal IN
(

SELECT fournisseur & Max(montanttotal)

FROM
(
SELECT fournisseur, compte, Sum(montant) AS montanttotal
FROM table
GROUP BY fournisseur, compte
)

GROUP BY fournisseur

)

;

et ça marche plutôt bien

merci à tous

"dany2" wrote:




Salut

Je ne suis pas spécialiste, mais je crois que les "requêtes analyse
croisée" existent pour cela. ("sommer" un champ par regroupement des
enregistrements identiques d'un ou plusieurs autres champs)


Ah, j'oubliais possibilité d'ajouter un ou plusieurs critères MaxDom par
exemple dans un champ calculé ou pas et un ordre de tri...

Pas se casser la tête avec du code quand ce n'est pas indispensable...

A+



Dany2



Bonjour,

Je travaille sur la table suivante (simplifiée):

nom fournisseur; numéro de compte; montant
fourn1;cp1;14€
fourn1;cp1;34€
fourn1;cp2;40€
fourn2;cp2;20€
fourn2;cp3;15€
fourn3;cp4;10€

le but étant d'obtenir EN UNE SEULE REQUETE pour chaque fournisseur le
compte le plus important (et le montant correspondant), c'est à dire:
fourn1;cp1;48€
fourn2;cp2;20€
fourn3;cp4;10€

pourriez-vous m'aider?
merci d'avance