Besoin d'aide Access
Résolu
Elmout
-
Christounet Messages postés 1264 Date d'inscription Statut Membre Dernière intervention -
Christounet Messages postés 1264 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Comme le titre l'indique j'aurais besoin de conseils/aide pour savoir si ce que je veux faire est possible ou pas et si oui comment car je n'y arrive pas tout seul.
J'ai donc une table Population(ID_PAYS,YEAR,SOURCE,POPULATION), avec cette dernière j'aimerais pouvoir récupérer la valeur max pour POPULATION sachant qu'il peut y avoir plusieurs lignes étant donné la structure de ma table (ID_PAYS,YEAR et SOURCE clé primaire)
Voilà ça parait tout bète mais je n'y arrive pas ... serais-je obligé de passer par du VBA pour arriver à mes fins ? ou une super requête SQL que je n'arrive pas à batir me suffira ?
Merci beaucoup pour votre aide.
Cordialement,
Comme le titre l'indique j'aurais besoin de conseils/aide pour savoir si ce que je veux faire est possible ou pas et si oui comment car je n'y arrive pas tout seul.
J'ai donc une table Population(ID_PAYS,YEAR,SOURCE,POPULATION), avec cette dernière j'aimerais pouvoir récupérer la valeur max pour POPULATION sachant qu'il peut y avoir plusieurs lignes étant donné la structure de ma table (ID_PAYS,YEAR et SOURCE clé primaire)
Voilà ça parait tout bète mais je n'y arrive pas ... serais-je obligé de passer par du VBA pour arriver à mes fins ? ou une super requête SQL que je n'arrive pas à batir me suffira ?
Merci beaucoup pour votre aide.
Cordialement,
A voir également:
- Besoin d'aide Access
- Acer quick access - Forum Logiciels
- Access appdata - Guide
- Exemple base de données access à télécharger gratuit - Forum Access
- Exemple base de données Access de gestion ✓ - Forum Logiciels
- Quick acces ✓ - Forum Windows
4 réponses
Bonjour,
Si tu veux seulement savoir la valeur maximale de la colonne Population, le code est
A plus
Si tu veux seulement savoir la valeur maximale de la colonne Population, le code est
SELECT MAX(popupation) from nomdetatable
A plus
Elmout
Effectivement ça marche mais dans ce cas je complique :p. Il faudrait que je puisse "choisir" de prendre pas forcément le max mais en priorité tel source et si celle là n'existe pas pas prendre le max des autres.
Bonjour,
Le code devrait être le suivant
Cette requête devrait te retourner soit un enregistrement, soit deux enregistrements
Si ta source préférée existe, le premier enregistrement contiendra son maximum et le deuxième le maximum des autres source, si ta source préférée n'existe pas, le premier et seul enregistrement contiendra le maximum des autres sources.
A plus
Le code devrait être le suivant
SELECT MAX(population) from nomdetatable WHERE source = sourcepreferée UNION SELECT MAX(population) from nomdetatable WHERE source <> sourcepreferée
Cette requête devrait te retourner soit un enregistrement, soit deux enregistrements
Si ta source préférée existe, le premier enregistrement contiendra son maximum et le deuxième le maximum des autres source, si ta source préférée n'existe pas, le premier et seul enregistrement contiendra le maximum des autres sources.
A plus
Bonjour,
Ce code fait bien ce que tu dis mais le soucis que je vais avoir c'est d'exploter cette requête ou plutôt les résultats de cette requêtes dans un Etat Access ... En fouillant dans ma mémoire de cours de SQL il me semble que je pourrais obtenir ce que je voudrais en faisant des jointures entre plusieurs requêtes.
SELECT * FROM Population AS NSO WHERE SOURCE="NSO"
SELECT * FROM Population AS IFS WHERE SOURCE="IFS"
SELECT * FROM Population AS CHELEM WHERE SOURCE="CHELEM"
avec ça je récupère 3 tables avec ID_PAYS,YEAR,SOURCE,POPULATION et c'est donc après que je bloque.je voudrais obtenir une table de la forme (ID_PAYS,YEAR,NSO.POPULATION,IFS.POPULATION,CHELEM.POPULATION et bien entendu sans doublons au niveau des ID_PAYS ou YEAR .... malheureusement je n'arrive pas à obtenir cette table qui me permettrait d'exploiter cette requête dans Etat Access
Merci pour tes réponses et j'espère ta future réponse ;)
Ce code fait bien ce que tu dis mais le soucis que je vais avoir c'est d'exploter cette requête ou plutôt les résultats de cette requêtes dans un Etat Access ... En fouillant dans ma mémoire de cours de SQL il me semble que je pourrais obtenir ce que je voudrais en faisant des jointures entre plusieurs requêtes.
SELECT * FROM Population AS NSO WHERE SOURCE="NSO"
SELECT * FROM Population AS IFS WHERE SOURCE="IFS"
SELECT * FROM Population AS CHELEM WHERE SOURCE="CHELEM"
avec ça je récupère 3 tables avec ID_PAYS,YEAR,SOURCE,POPULATION et c'est donc après que je bloque.je voudrais obtenir une table de la forme (ID_PAYS,YEAR,NSO.POPULATION,IFS.POPULATION,CHELEM.POPULATION et bien entendu sans doublons au niveau des ID_PAYS ou YEAR .... malheureusement je n'arrive pas à obtenir cette table qui me permettrait d'exploiter cette requête dans Etat Access
Merci pour tes réponses et j'espère ta future réponse ;)
Bonjour,
Avec Access, j'ai crée une requête d'analyse croisée dont voici le code
Tu trouveras ici le résultat. Regardes si cela correspond a ce que tu recherches.
A plus
Avec Access, j'ai crée une requête d'analyse croisée dont voici le code
TRANSFORM Max(Population.POPULATION) AS MaxOfPOPULATION SELECT Population.ID_PAYS, Population.YEAR FROM Population GROUP BY Population.ID_PAYS, Population.YEAR PIVOT Population.SOURCE;
Tu trouveras ici le résultat. Regardes si cela correspond a ce que tu recherches.
A plus
Bonjour,
J'ai écrit une nouvelle requête qui devrait donner ce que tu recherche
Tu sauves cette requête et tu lui donnes un nom, ensuite tu peux utiliser cette requête dans un état.
En espérant que cela fasse ce que tu veux.
A plus
J'ai écrit une nouvelle requête qui devrait donner ce que tu recherche
select matable.id_pays , matable.year , sum(Matable.CHELEM) as Chelem , sum(Matable.IFS) as Ifs , sum(Matable.NSO) as Nso from (select id_pays , year , iif(source='CHELEM' , totalpopulation , 0) as CHELEM , iif(source='IFS' , totalpopulation , 0) as IFS , iif(source='NSO' , totalpopulation , 0) as NSO from (select id_pays , year , source , max(Population) as TotalPopulation from Population group by id_pays , year , source)) as Matable group by matable.id_pays , matable.year;
Tu sauves cette requête et tu lui donnes un nom, ensuite tu peux utiliser cette requête dans un état.
En espérant que cela fasse ce que tu veux.
A plus