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 :

Tri de données selon un critère [AC-2003]


Sujet :

Requêtes et SQL.

  1. #1
    Membre habitué
    Inscrit en
    Décembre 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 11
    Par défaut Tri de données selon un critère
    Bonjour à toutes et à tous,

    Je suis étudiant et débutant en Access, ma demande pourra peut-être parraitre simplet mais je post quand même.

    J'aimerais effectuer un tri dans ma base de données mais en gardant seulement les code articles contenant moins de dix articles.

    En gros il me faudrais la syntaxe pour avoir seulement les données si le code article se répète dix fois ou moins.

    Merci

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 684
    Par défaut
    salut,
    pour avoir le nombre d'enregistrements par élément, tu peux utiliser la fonction COUNT().
    exemple :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT IDarticle, COUNT(IDarticle) as nb from MaTable GROUP BY IdArticle;
    Pour le filtre sur le nombre < 10, tu placeras la clause HAVING
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    HAVING COUNT(IdArticle)<10
    exemple :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT IDarticle, COUNT(IDarticle) as nb from MaTable GROUP BY IdArticle HAVING COUNT(IDarticle)<10;
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel (3e édition)
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre habitué
    Inscrit en
    Décembre 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 11
    Par défaut
    Re,

    La syntaxe me semble bonne mais je n'arrive pas à situer cette requête dans le pavé SQL d'Access.

    Sinon est-ce que je ne pourrais pas simplement transformer le "HAVING COUNT(IdArticle)<10" en un critère digestible pour Access?

    Merci pour l'aide

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 684
    Par défaut
    salut,
    c'est totalement digeste tu sais

    un peu de lecture sur la partie HAVING dans la requête SQL :
    http://access.developpez.com/sql/#L1.2.1
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel (3e édition)
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  5. #5
    Membre habitué
    Inscrit en
    Décembre 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 11
    Par défaut
    Re,

    Access me met "erreur de syntaxe" c'est pour ça que je demandais ^^' j'ai re-tester et cela ne fonctionne toujours pas.

    Sinon doit-je le mettre à une place bien précise? Comme je n'ai pas pratiquer le SQL depuis longtemps je m'y perd un peu ^^'

  6. #6
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 684
    Par défaut
    A quoi ressemble ta requête SQL actuelle stp ?
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel (3e édition)
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  7. #7
    Membre habitué
    Inscrit en
    Décembre 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 11
    Par défaut
    Re,

    Elle ressemble à rien xD étant donné que c'est la requête avec d'autre requêtes imbriquées dedans c'est un vrai sac de noeuds.

    Et comme j'ai pas le droit de divulguer je préfère t'envoyer ça par MP si tu le veux bien ^^

  8. #8
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 684
    Par défaut
    En principe, on a pour habitude de ne pas résoudre de problèmes par MP, dans la mesure où les éléments et pistes évoquées doivent pouvoir servir aux autres membres qui rencontreraient les mêmes soucis

    Sans code SQL, il nous sera plus difficile d'arriver à trouver des solutions pérennes.

    Regarde bien les tutoriaux sur les syntaxes, et regarde à quel niveau l'erreur est détectée par Access, ca te permettra d'en savoir plus sur ce qu'il faut corriger.
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel (3e édition)
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  9. #9
    Membre habitué
    Inscrit en
    Décembre 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 11
    Par défaut
    Re,

    Oui je me doute bien, sinon l'erreur vien du "COUNT" quand je l'imbrique dans ma requête SQL.

    On me dit "opérateur absent" est-ce que je doit spécifier quelque chose?

  10. #10
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 684
    Par défaut
    peux-tu simplifier ta requête pour nous montrer juste les parties SELECT, GROUP BY et HAVING stp ?
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel (3e édition)
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  11. #11
    Membre habitué
    Inscrit en
    Décembre 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 11
    Par défaut
    Re,

    Il n'y a pas de partie HAVING

    Et voici une version très light (le codeAchat correspond à la valeur que je doit comter et trier afin d'avoir seulement les codes achats qui ont moins de 10 articles) :

    SELECT TBL_Article.CodeAchat, TBL_Nomenclature.Composé, TBL_Article.Emplacement
    FROM mes_tables
    WHERE mes_conditions
    ORDER BY TBL_Article.LigneProduit;

    Merci =)

  12. #12
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 684
    Par défaut
    ok,
    première étape, on va faire la partie COUNT :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT COUNT(TBL_Article.CodeAchat) AS NbCodeAchat, TBL_Article.CodeAchat, TBL_Nomenclature.Composé, TBL_Article.Emplacement
    FROM mes_tables
    WHERE mes_conditions
    GROUP BY TBL_Article.CodeAchat, TBL_Nomenclature.Composé, TBL_Article.Emplacement
    ORDER BY TBL_Article.LigneProduit;

    jusque là ca fonctionne ?
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel (3e édition)
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  13. #13
    Membre habitué
    Inscrit en
    Décembre 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 11
    Par défaut
    Re,

    Ca à l'air de passer sauf pour le ORDER BY

    Le message d'erreur : "Vous avez essayé d'exécuter une requête ne comprenant pas l'expression spécifiée 'TBL_Article.LigneProduit' comme une partie de la fonction d'agrégat."

    Est-ce qu'il faut mettre un ORDER BY TBL_Article.CodeAchat à la place?

    *edit*
    Si je fais en remplaçant par TBL_Article.CodeAchat j'obtient une colonne qui compte mon nombre de CodeAchat si c'est ce qui devait ce produire alors oui ça fonctionne jusque là

  14. #14
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 684
    Par défaut
    ok,
    donc si on vire le order by pour l'instant et qu'on rajoute le HAVING? ca devrait donner ceci :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT COUNT(TBL_Article.CodeAchat) AS NbCodeAchat, TBL_Article.CodeAchat, TBL_Nomenclature.Composé, TBL_Article.Emplacement
    FROM mes_tables
    WHERE mes_conditions
    GROUP BY TBL_Article.CodeAchat, TBL_Nomenclature.Composé, TBL_Article.Emplacement
    HAVING COUNT(TBL_Article.CodeAchat)<10;
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel (3e édition)
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  15. #15
    Membre habitué
    Inscrit en
    Décembre 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 11
    Par défaut
    Re,

    Tout fonctionne mais au niveau de mon extraction je me retrouve quand même avec des CodeArticle de plus de 40 articles mais les plus grosses familles ont disparues c'est déjà ça de gagner!

    Sinon pas de soucis au niveau SQL

  16. #16
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 684
    Par défaut
    vérifie que ton regroupement peut se faire aussi sur TBL_Nomenclature.Composé et TBL_Article.Emplacement.

    Si ce n'est pas le cas, il faudra faire une sous requête intermédiaire =)
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel (3e édition)
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  17. #17
    Membre habitué
    Inscrit en
    Décembre 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 11
    Par défaut
    Re,

    Je pense que le problème vien du comptage, j'arrive pas à savoir comment il s'y prend pour compter le nombre de codeAchat.

    Par exemple pour un codeAchat ou visuelement j'en ai 23 il en compte plusieurs ligne de 1 comme si le codeAchat était différent.

    Il n'y a vraiment aucun moyen de le forcer à compter le nombre de codeAchat différent pour ensuite lui demander d'afficher le nombre de codeAchat qui ont moins de dix articles?

    Sachant que le codeAchat se répète pour chaque article qui le compose.

    Si on compte un nombre de codeAchat > 10 alors on l'exclu.

    Comme ça au final je n'ai qu'une contrainte et je peux afficher mes résultats après.

    En tout cas merci j'ai pas mal progressé grace à toi =)

  18. #18
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 684
    Par défaut
    En fait la question est :
    si tu as ceci en table :
    codeAchat Composé Emplacement
    1 A Paris
    1 A Lyon
    1 B Paris
    2 A Paris
    tu veux voir quel résultat ?
    Nbachat codeAchat
    3 1
    1 2
    ou bien
    Nbachat codeAchat Composé Emplacement
    1 1 A Paris
    1 1 A Lyon
    1 1 B Paris
    1 2 A Paris
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel (3e édition)
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  19. #19
    Membre habitué
    Inscrit en
    Décembre 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 11
    Par défaut
    Re,

    Hum on va dire que sur une table qui me donne :

    CodeAchat / CodeArticle
    Paris / 01
    ... / ...
    Paris / 12
    Lyon / 01
    Lyon / 02
    Bordeaux / 01
    Bordeaux / 02

    Le résultat serait

    Lyon / 01
    Lyon / 02
    Bordeaux / 01
    Bordeaux / 02

    Car Paris aurait plus de dix articles (12), mais Lyon et Bordeaux eux en ont deux donc sont affichés.

    Les seules informations importantes sont le codeArticle et le codeAchat.

    *edit*

    ça se rapproche plus de la première de tes deux solutions =).

  20. #20
    Membre habitué
    Inscrit en
    Décembre 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 11
    Par défaut
    Re,

    En fait j'ai trouvé la source de mon problème, si je crée une requête qui me compte juste le nombre de codeAchat comme voulu cela fonctionne mais si j'ajoute les codeArticle cela dérègle tout, je pense que ça vien du fait que le codeArticle est la clé primaire de la table sur laquelle je travail.

    Bref je vais essayer de démêler tout ça.

    Merci pour l'aide et le temps passer pour moi et bonne continuation.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. recherche dans base de données selon 2 critères
    Par Nathalie68 dans le forum Excel
    Réponses: 1
    Dernier message: 20/02/2008, 21h19
  2. Tri de colonnes selon 1 critère
    Par cynoq dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 27/01/2008, 14h43
  3. Tri de colonnes selon 1 critère
    Par cynoq dans le forum Excel
    Réponses: 1
    Dernier message: 23/01/2008, 21h04
  4. Réponses: 1
    Dernier message: 30/07/2007, 19h37
  5. [SQL] Comment rechercher une donnée selon un critère !
    Par Il_TiRaNNo dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 09/05/2007, 14h59

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