Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Requêtes et SQL.
Requêtes et SQL. Tout ce qui concerne vos questions sur les requêtes et le SQL sous Access se trouve ici.
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 29/09/2011, 14h55   #1
Invité régulier
 
Inscription : août 2011
Messages : 14
Détails du profil
Informations forums :
Inscription : août 2011
Messages : 14
Points : 5
Points : 5
Par défaut Requête : Max et regroupement

Bonjour,

j'ai créé une requête me permettant de regrouper les enregistrement ainsi :

société - date - salarié - nb - lieu

Jusque là tout va bien... mais lorsque je souhaite obtenir seulement l'enregistrement contenant le nb le plus élévé (fonction MAX) , je n'arrive pas :

-soit je dois enlever le lieu

-soit j'ai plusieurs enregistrement affichés selon les lieux.

Comment avoir un tri, me donnant, 1 seul enregistrement pour chaque personne dont le nb est le plus élévé, tout en pouvant connaître le lieu correspondant ?

Par avance merci
Immalie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 15h59   #2
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 178
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 178
Points : 2 807
Points : 2 807
Bonjour Immalie,

Tout ne peut pas être possible en une seule fois !...

Si j'ai bien compris, quand tu dis :
Citation:
Envoyé par Immalie
j'ai créé une requête me permettant de regrouper les enregistrement ainsi :
société - date - salarié - nb - lieu
ta requête liste pour une société/une date/un salarié/un lieu : un nombre (de je ne sais quoi).
C'est bien cela ?
__________________
Dis-nous et à bientôt,
Richard.
----------------------------------------------------------------------------------------------
En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
Richard_35 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 29/09/2011, 16h11   #3
Membre éclairé
 
Avatar de boussafi
 
Homme
Ingénieur développement logiciels
Inscription : septembre 2007
Messages : 342
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Algérie

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Industrie

Informations forums :
Inscription : septembre 2007
Messages : 342
Points : 397
Points : 397
Envoyer un message via Yahoo à boussafi Envoyer un message via Skype™ à boussafi
illustres ton besoin!!!
boussafi est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 29/09/2011, 16h49   #4
Invité régulier
 
Inscription : août 2011
Messages : 14
Détails du profil
Informations forums :
Inscription : août 2011
Messages : 14
Points : 5
Points : 5
Merci Richard et Boussafi de prendre du temps pour moi

oui c'est cela

un regroupement est fait d'un tri sur une semaine sachant que je voudrais avoir que nombre MAX et son lieu correspondant :

société A
salarié a nombre lieu
salarié b nombre lieu
salarié c nombre lieu


société B
salarié a2 nombre lieu
salarié b2 nombre lieu
salarié c2 nombre lieu

est-ce plus clair ?



Immalie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 17h06   #5
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 178
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 178
Points : 2 807
Points : 2 807
Citation:
Envoyé par Immalie
oui c'est cela
une première requête R1 :
société, date, salarié, nb : max(xx)
==> te donnera le max(xx), tous lieux confondus ;

une seconde requête R2 :
R1 liée à ta table initiale, via société, date, salarié, nb
==> te donnera la liste des lieux (et oui, plusieurs possibles) concerné(s) par nb max(xx).

D'où, la première remarque :
Citation:
Tout ne peut pas être possible en une seule fois !...
__________________
Dis-nous et à bientôt,
Richard.
----------------------------------------------------------------------------------------------
En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
Richard_35 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 29/09/2011, 18h23   #6
Invité régulier
 
Inscription : août 2011
Messages : 14
Détails du profil
Informations forums :
Inscription : août 2011
Messages : 14
Points : 5
Points : 5
Je suis désolée, je ne comprends pas :

Citation:
Envoyé par Richard_35 Voir le message
==> te donnera la liste des lieux (et oui, plusieurs possibles) concerné(s) par nb max(xx).
Vu qu'il n'y a qu'un nb max par personne, il ne doit y avoir qu'un seul lieu ou ce nb max a été fait.... non ?
Immalie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 18h37   #7
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 178
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 178
Points : 2 807
Points : 2 807
Citation:
Envoyé par Immalie
Vu qu'il n'y a qu'un nb max par personne, il ne doit y avoir qu'un seul lieu ou ce nb max a été fait.... non ?
==> pas tout à fait : la requête te donne le MAX(Champ), mais cette valeur maximum est, peut-être, valable pour plusieurs éléments du groupe. Mais, peut-être, n'est-ce pas possible dans ton contexte, je ne sais pas.

Exemple pour une table :
Code :
1
2
3
4
5
6
7
clé   famille   champ_numérique
1     A         100
2     A         120
3     B         150
4     A         120
5     B         100
6     B         150
Une requête groupée par famille avec le max(champ_numérique) te donnera :
Code :
1
2
3
famille  max(champ_numérique)
A        120
B        150
Si tu veux retrouver les éléments correspondants au MAX(), tu auras :
Code :
1
2
3
4
5
famille  max(champ_numérique)  clé
A        120                   2
A        120                   4
B        150                   3
B        150                   6
__________________
Dis-nous et à bientôt,
Richard.
----------------------------------------------------------------------------------------------
En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
Richard_35 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 29/09/2011, 20h32   #8
Invité régulier
 
Inscription : août 2011
Messages : 14
Détails du profil
Informations forums :
Inscription : août 2011
Messages : 14
Points : 5
Points : 5
c'est exactement ce que je voudrais, mais la table contenant le lieu n'a pas de relation direct avec la requête R1, est-cela qui fait que dans R2 je n'obtienne pas le bon résultat ?

...

Je viens de vérifier et même avec des données de la même base cela ne marche pas, ou du moins je n'y arrive pas
Immalie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 23h07   #9
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 178
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 178
Points : 2 807
Points : 2 807
Citation:
Envoyé par Immalie
.../... mais la table contenant le lieu n'a pas de relation direct avec la requête R1 .../...
==> c'est impossible, puisque R1 part de ta table !
Ce que tu appelles "lieu" est "zone" dans ta requête ?
__________________
Dis-nous et à bientôt,
Richard.
----------------------------------------------------------------------------------------------
En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
Richard_35 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 29/09/2011, 23h08   #10
Invité régulier
 
Inscription : août 2011
Messages : 14
Détails du profil
Informations forums :
Inscription : août 2011
Messages : 14
Points : 5
Points : 5
Citation:
Envoyé par Richard_35 Voir le message
Si tu veux retrouver les éléments correspondants au MAX(), tu auras :
Code :
1
2
3
4
5
famille  max(champ_numérique)  clé
A        120                   2
A        120                   4
B        150                   3
B        150                   6
Je ne comprends pas comment obtenir cela. Comment dans une seconde requête les clés correspondantes s'affichent ?

oui, zone = lieu, mais la clé me suffirait...
Immalie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 23h26   #11
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 178
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 178
Points : 2 807
Points : 2 807
Bien, reprenons.

Dans la requête que tu as présentée, supprimes la colonne "Zone" : cela devient la requête R1.
__________________
Dis-nous et à bientôt,
Richard.
----------------------------------------------------------------------------------------------
En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
Richard_35 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 30/09/2011, 08h56   #12
Invité régulier
 
Inscription : août 2011
Messages : 14
Détails du profil
Informations forums :
Inscription : août 2011
Messages : 14
Points : 5
Points : 5
merci

étape 1 : faite, j'ai enlevé Zone
Immalie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2011, 10h48   #13
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 178
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 178
Points : 2 807
Points : 2 807
Bonjour Immalie,

Bien.

Tu as donc :
1 ligne pour une société, un $deb et un $agent, avec le max de SL pour ce triplé, toutes zones confondues.
==> visiblement, tu n'as plus besoin de GHT2, tu peux donc la supprimer.

Les données te semblent-elles correctes, à ce stade ?
__________________
Dis-nous et à bientôt,
Richard.
----------------------------------------------------------------------------------------------
En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
Richard_35 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 30/09/2011, 11h04   #14
Invité régulier
 
Inscription : août 2011
Messages : 14
Détails du profil
Informations forums :
Inscription : août 2011
Messages : 14
Points : 5
Points : 5
oui, Richard, c exact et cela me donne actuellement ce que j'attends.
Immalie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2011, 11h19   #15
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 178
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 178
Points : 2 807
Points : 2 807
Donc, sauvegarde cette requête en R1.

Crées une requête R0 :
- ajoutes GHT4 ;
- ajoutes GHT1 ;
- liaison identique à la requête que tu as présentée ;
- mêmes champs que la requête que tu as présentée ;
- pas de regroupement.
==> R0 devient ta référence.

Crées une requête R2 :
- ajoutes R1 ;
- ajoutes R0 ;
- liaison de R1 vers R0 via :
société => société
$deb => $deb
$agent => $agent
max(SL) => SL
==> te donne la liste des triplés dont SL a été sélectionné comme MAX.

Les données te semblent-elles correctes, à ce stade ?
__________________
Dis-nous et à bientôt,
Richard.
----------------------------------------------------------------------------------------------
En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
Richard_35 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 30/09/2011, 11h47   #16
Invité régulier
 
Inscription : août 2011
Messages : 14
Détails du profil
Informations forums :
Inscription : août 2011
Messages : 14
Points : 5
Points : 5
Ok, les explications sont claires.
mais :
Dans R2, une fois les 2 requêtes ajoutées et les liaison faites, je sélectionne quoi dans les colonnes ?

R1.* et R0.* ?
Immalie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2011, 12h02   #17
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 178
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 178
Points : 2 807
Points : 2 807
Citation:
Envoyé par Immalie
.../... je sélectionne quoi dans les colonnes ?
==> celles qui t’intéressent : elles sont à ta disposition.

Les données renvoyées par R2 te semblent-elles correctes, à ce stade ?
__________________
Dis-nous et à bientôt,
Richard.
----------------------------------------------------------------------------------------------
En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
Richard_35 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 30/09/2011, 12h09   #18
Invité régulier
 
Inscription : août 2011
Messages : 14
Détails du profil
Informations forums :
Inscription : août 2011
Messages : 14
Points : 5
Points : 5
J'ai sélectionné les données de R0 dans les colonnes et ça marche pour les résultat de R2 !
Immalie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2011, 12h19   #19
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 178
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 178
Points : 2 807
Points : 2 807
Tu prends (SELECT) :
  • société de R1
  • $deb de R1
  • $agent de R1
  • max(SL) de R1
  • SL de R0
  • R0.*
==> te donne la liste des R0 dont SL a été sélectionné comme MAX, pour le triplé société/$deb/$agent.
__________________
Dis-nous et à bientôt,
Richard.
----------------------------------------------------------------------------------------------
En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
Richard_35 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 30/09/2011, 12h25   #20
Invité régulier
 
Inscription : août 2011
Messages : 14
Détails du profil
Informations forums :
Inscription : août 2011
Messages : 14
Points : 5
Points : 5
oui cela fonctionne.

les champs sont en double sur la ligne mais c juste.

Et maintenant, comment obtenir la zone de la table GHT2 ou simplement la clé de l'enregistrement ?
Immalie 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 20h53.


 
 
 
 
Partenaires

Hébergement Web