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 :

Incrémentation suivant critère


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2011
    Messages : 91
    Points : 63
    Points
    63
    Par défaut Incrémentation suivant critère
    Bonjour,

    Je souhaite créer une requête à partir d'une table avec un champ "rang" qui s'incrémente (mais en revenant à 1) suivant la référence et la date croissante :

    La table :

    Référence Date
    A 15/09/2021
    A 24/05/2021
    B 12/10/2021
    C 05/05/2019
    A 04/08/2020
    C 26/01/2023
    C 01/05/2023
    B 24/12/2022
    A 01/01/2023

    Résultat souhaité :

    Référence Date Rang
    A 04/08/2020 1
    A 24/05/2021 2
    A 15/09/2021 3
    A 01/01/2023 4
    B 12/10/2021 1
    B 24/12/2022 2
    C 05/05/2019 1
    C 26/01/2023 2
    C 01/05/2023 3

    J'ai bien pensé à utiliser la fonction CpteDom, mais je ne sais pas revenir à 1 à chaque changement de référence.

    Merci pour votre aide

  2. #2
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 869
    Points : 3 448
    Points
    3 448
    Par défaut
    Bonjour frabeau,

    Dans la FAQ tu trouveras ceci:https://access.developpez.com/faq/?page=Concept#Ordoner
    qui fait exactement ce que tu veux.

    Ça ce traduit en SQL de la manière suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT T1.Ref, T1.Date_Ref, (SELECT Count(T2.Ref) AS Rang
    FROM T_Incrementation As T2
    WHERE T2.Ref=T1.Ref AND T2.Date_Ref<=T1.Date_Ref
    GROUP BY T2.Ref;) AS Rang
    FROM T_Incrementation AS T1
    ORDER BY T1.Ref, T1.Date_Ref;
    Bonne journée
    Ce qui se conçoit bien s’énonce clairement et les mots pour le dire arrivent aisément. Nicolas Boileau
    Si tout est OK, n'oubliez pas de cliquer sur

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2011
    Messages : 91
    Points : 63
    Points
    63
    Par défaut
    merci pour la réponse Robert1957, mais à quoi correspond T2, sachant que T1 est mon unique table ?

    Désolé pour la question mais je maitrise pas du tout SQL.

    Cordialement

  4. #4
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 869
    Points : 3 448
    Points
    3 448
    Par défaut
    Bonjour frabeau,

    T1 et T2 sont la même table. Vous devez juste remplacer les noms des champs par ceux de votre table ainsi que le nom de votre table. Dans mon exemple le nom de la table est T_Incrementation, vous n'avez qu'a remplacer par le nom de votre table, idem pour les champs.

    Bonne journée
    Ce qui se conçoit bien s’énonce clairement et les mots pour le dire arrivent aisément. Nicolas Boileau
    Si tout est OK, n'oubliez pas de cliquer sur

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2011
    Messages : 91
    Points : 63
    Points
    63
    Par défaut
    La table se nomme T SUIVI END et les champs Réf et Date demandée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT Réf, [Date demandée], (SELECT Count(Réf)) AS Rang
    FROM [T SUIVI END] As Réf
    WHERE Réf=Réf, AND [Date demandée]<=[Date demandée]
    GROUP BY Réf; AS Rang, *
    FROM [T SUIVI END] AS [T SUIVI END]
    ORDER BY Réf, [Date demandée;
    Mais je pense ne pas retraduire correctement

  6. #6
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 869
    Points : 3 448
    Points
    3 448
    Par défaut
    Hummm,

    En effet :
    Désolé pour la question mais je maitrise pas du tout SQL.
    Voici la bonne réponse a copier dans le QBE d'Access:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT T1.Réf, T1.[Date demandée], (SELECT Count(T2.Réf) AS Rang
    FROM [T SUIVI END] As T2
    WHERE T2.Réf=T1.Réf AND T2.[Date demandée]<=T1.[Date demandée]
    GROUP BY T2.Réf;) AS Rang
    FROM [T SUIVI END] AS T1
    ORDER BY T1.Réf, T1.[Date demandée];
    En passant ce n'est pas l'idéal de mettre des espaces, cela oblige a mettre des [] ce qui alourdit le code pour rien. Les accents ou autres signes ne sont pas mieux. SQL parle anglais.

    Bonne journée
    Ce qui se conçoit bien s’énonce clairement et les mots pour le dire arrivent aisément. Nicolas Boileau
    Si tout est OK, n'oubliez pas de cliquer sur

  7. #7
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 617
    Points : 56 726
    Points
    56 726
    Billets dans le blog
    40
    Par défaut
    Salut à tous


    Je pense que le GROUP BY T2.Réf n'est pas utile ici

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT T1.Réf, T1.[Date demandée], (SELECT Count(T2.Réf) AS Rang
    FROM [T SUIVI END] As T2
    WHERE T2.Réf=T1.Réf AND T2.[Date demandée]<=T1.[Date demandée]
    GROUP BY T2.Réf;) AS Rang
    FROM [T SUIVI END] AS T1
    ORDER BY T1.Réf, T1.[Date demandée];

  8. #8
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 869
    Points : 3 448
    Points
    3 448
    Par défaut
    Bonjour f-leb,

    En effet bien vu.

    Bonne journée
    Ce qui se conçoit bien s’énonce clairement et les mots pour le dire arrivent aisément. Nicolas Boileau
    Si tout est OK, n'oubliez pas de cliquer sur

  9. #9
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2011
    Messages : 91
    Points : 63
    Points
    63
    Par défaut
    Bonjour,

    Merci, le résultat est parfait.
    Bonne journée

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

Discussions similaires

  1. [VBA]Compter les enregistrement suivant critère d'un champs
    Par wachoo31 dans le forum VBA Access
    Réponses: 9
    Dernier message: 27/04/2007, 07h42
  2. Réponses: 16
    Dernier message: 25/03/2007, 09h56
  3. Bouton pour etat suivant critères
    Par lolo_bob2 dans le forum Access
    Réponses: 2
    Dernier message: 21/07/2006, 14h20
  4. Dessiner une ligne de DBGrid suivant critères
    Par nbutin dans le forum C++Builder
    Réponses: 3
    Dernier message: 15/06/2006, 17h43
  5. [Etat] nombre de valeurs suivant critère
    Par bigounet dans le forum IHM
    Réponses: 4
    Dernier message: 01/03/2006, 11h47

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