IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes et SQL. Discussion :

Requete regroupement pour plusieurs champs


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 125
    Points : 62
    Points
    62
    Par défaut Requete regroupement pour plusieurs champs
    Bonjour.

    J'ai une table avec plusieurs champs (disons pomme, fraise, cerise....) chacun de ses champs est rempli avec des enregistrement numérique (12,24,58 il s'agit d'un nombre de jour AVEC DOUBLONS !)

    Imaginons maintenant que je veuille afficher le nombre de [Pomme] en function du compte des jours (par exemple le jour 24 il y en a 2, le jour 12 il y en a 50...). Ceci est plutot simple. Je fais une requete ou je met mon champs [Pomme] en regroupement et n'importe quel autre champ en "compte" et ainsi ça m'affiche le nombre de [Pomme] tel jour, le jour suivant etc etc.

    MAINTENANT vient le probleme. J'ai certe le nombre de pomme le jour 1, le jour 2 etc etc. Je peux faire la meme chose dans une autre requete pour le nombre de cerise. Mais COMMENT FAIRE pour faire tout les fruit sur une seul et meme requete ? Du style le jour 1, 6 pommes et 4 cerise et 8 fraise...) ??

    Merci d'avance

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    D'abors tu as un problème de structure.
    Tu devrais avoir quelque chose comme :

    tblFruitJour
    Fruit
    NombreJour
    Avec un enregistrement par jour et fruit.

    Et après tu utiliserai une requête d'analyse croisée dynamique qui ferait ce que tu demandes.

    Comme je suppose que tu ne peux pas changer la structure de ta table, je te suggère une solution en plusieurs requêtes.
    Note qu'on pourrait sans doute n'en faire qu'une mais l'éditeur de requête de Access se prête assez mal à ce genre de fantaisies.

    reqListeJour
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select tblDonnees.DateJour
    from tblDonnees
    group by tblDonnee.DateJour

    reqListeFruitJour_Pomme
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select tblDonnees.DateJour, tblDonnees.Pomme, Sum(tblDonnees.NbPomme) as NbPomme
    from tblDonnees
    group by tblDonnee.DateJour, tblDonnees.Pomme

    Recommancer pour tes cerises et tes fraises.

    et ensuite tu fais une nouvelle requête qui prend reqListeJour et en jointure à gauche les 3 reqListeFruitJour sur DateJour.

    Tu remarqueras que l'inconvénient majeur de ta structure est que si tu ajoutes un fruit tu es aussi obligé d'ajoutre une requête et de modifier ta requête d'affichage.

    L'architecture que je t'ai suggérée au début permet de gérer un nombre variable de fruits sans avoir à changer les requêtes.
    Attention les requêtes croisée dynamiques retournant un nombre variable de colonnes peuvent poser des problèmes d'affichage dans les formulaires.
    On peut le gérer mais il faut éventuellement le programmer.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 125
    Points : 62
    Points
    62
    Par défaut
    Salut, merci pour ta réponse.
    J'ai avancé dans mon travail et j'ai quelque chose de beaucoup mieux. Je vais essayé de structurer ce qu'il se passé

    CE QUI SUIT EST CE QUI EST FAIT : -----------------------------------------

    Pour etre plus précis, j'ai un champ [N° de semaine] qui me dit le numéro de semaine ou se termine les taches du champs [Tache]. Ainsi j'ai plusieurs doublons dans [N° semaine] car plusieurs taches peuvent se terminer la semaine 3 par exemple.

    Bref j'ai fais une requete qui m'affiche le champ [N° de semaine] sans doublons, avec à coté un champs [Compte] qui me dit combien de fois le numéro de semaine 3 apparait (par exemple) je peux ainsi voir combien de tache se finissent la semaine 3.

    J'ai ensuite fait dans cette meme requete, un autre champ [Cumul] qui me fait le cumul semaine par semaine. Ainsi si en semaine 1 j'ai 4 tache, et en semaine 2 j'en ai 5, le deuxième enregistrement de [Cumul] m'affichera 9, le troisieme enregistrement y ajoutera le nombre de tache fini en semaine 3 etc...

    Je peux ensuite faire un graphique avec [N° de semaine] en horizontal et [Cumul] en vertical et ma tache est accomplice <3 je vous invite a bien digirer tout ça avant de passer à la suite.


    CE QUI SUIT EST CE QU'IL FAUDRAIT FAIRE : ------------------------------------------

    Ce qu'il se passé. C'est que je n'ai pas VRAIMENT un champ [N° de semaine]. En réalite j'ai [N° de semaine effectif] et [Numéro de semaine ideal] (on va se contenter de deux champ pour cet exemple).

    J'ai donc fait une deuxieme requete avec [N° de semaine ideal], son [Compte "ideal"] et son [Cumul "ideal"], pareil que pour [N° de semaine effectif] en fait. Ainsi j'ai pu faire un deuxieme graphique avec [N° de semaine ideal] en horizontal et [Cumul ideal] en vertical. Tout est beau.

    Le challenge maintenant, c'est de mettre ces deux courbes sous un seul et meme graphique. Un graphique avec en horizontal toujours les [N° de semaine] et en verticale le [Cumul] et on aurait ainsi une courbe "ideal" et une "effective". Comment faire donc ? Je pense qu'il faut créer une autre requete mais je ne sais pas comment m'y prendre.



    Merci d'avance <3

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Désolé pour les graphiques, cela fait des années que je fais cela en Excel sans un regard en arrière pour Access, donc je ne sais pas.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 125
    Points : 62
    Points
    62
    Par défaut
    Merci quand meme

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo