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 :

Comment incrementer Champ3 suivant valeur de Champ2


Sujet :

Requêtes et SQL.

  1. #1
    Membre régulier
    Inscrit en
    Octobre 2007
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 128
    Points : 76
    Points
    76
    Par défaut Comment incrementer Champ3 suivant valeur de Champ2
    Bonjour !

    Je suis sous Access 2010 et Win 7
    J'ai une table Access Table1 ( voir Exemple1 ) dans lequel on a 2 champs :
    AC SN
    AC FA

    Je voudrai construire une nouvelle table ( voir Resultat1 ) dans lequel on a 3 champs
    AC SN
    AC FA
    No ordre

    Bref : Commment incrementer un champ suivant la valeur (Ici No ordre ) d'un autre champ ( ici AC FA ) ?

    Je crois que la requete = pas possible !

    Apres avoir parcouru certains forums , aides, etc.. j'ai essayé les SQLs :
    1) La commande SQL :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT [AC SN], [AC FA], (Select Count([AC FA]) FROM Table1 WHERE [AC FA] > [AC FA])+1 AS [AC no ordre]
    FROM Table1;

    donne des 1 partout dans colonne AC no ordre

    2) la commande SQL :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Table1.[AC SN], Table1.[AC FA], (Select Count([AC FA]) FROM Table1 AS T WHERE T.[AC FA] = Table1.[AC FA] AND T.[AC SN] <=Table1.[AC SN])+1 AS [AC no ordre]
    FROM Table1
    ORDER BY Table1.[AC FA], Table1.[AC no ordre];

    Un peu mieux mais met :
    si AC FA = vide è met '1'
    si AC FA pas vide et est unique è met '2'
    Si AC FA pas vide et n'est pas è commence par '2'

    Donc pas comme je veux !

    J'aurai aimé avoir dans colonne AC no ordre

    si AC FA = vide : on ne met rien ( ou on met '0' )
    si AC FA pas vide et est unique : on met '1'
    Si AC FA pas vide et n'est pas unique : on incremente à partir de '1'

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


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 692
    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 692
    Points : 57 244
    Points
    57 244
    Billets dans le blog
    41
    Par défaut
    bonjour,

    vite fait, cette solution semble marcher:

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    SELECT Table1.[AC SN],
           Table1.[AC FA],
           (SELECT Count([AC FA])
            FROM   Table1 AS T
            WHERE  T.[AC FA] = Table1.[AC FA]
                   AND T.[AC SN] < Table1.[AC SN])
           + 1 AS [AC no ordre]
    FROM   Table1
    WHERE  Table1.[AC FA] IS NOT NULL
    UNION
    SELECT Table1.[AC SN],
           Table1.[AC FA],
           NULL
    FROM   Table1
    WHERE  Table1.[AC FA] IS NULL
    ORDER  BY [AC FA],
              [AC SN];

  3. #3
    Membre régulier
    Inscrit en
    Octobre 2007
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 128
    Points : 76
    Points
    76
    Par défaut
    C'est bon !
    Merci

  4. #4
    Membre régulier
    Inscrit en
    Octobre 2007
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 128
    Points : 76
    Points
    76
    Par défaut
    Et comment faire pour forcer [AC no ordre] sur 3 caracteres
    ( ex : "001" ,"002","003", etc...)
    Mais si vide = ne rien mettre

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


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 692
    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 692
    Points : 57 244
    Points
    57 244
    Billets dans le blog
    41
    Par défaut
    avec format :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    format([LeChamp],"000")
    Mais si vide = ne rien mettre
    avec Nz:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Nz(format([LeChamp],"000"))

  6. #6
    Membre régulier
    Inscrit en
    Octobre 2007
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 128
    Points : 76
    Points
    76
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Nz(format([AC no ordre],"000"))
    ne marche pas !
    Et je le mets ou ?

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


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 692
    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 692
    Points : 57 244
    Points
    57 244
    Billets dans le blog
    41
    Par défaut
    bonjour,

    comme ça ?
    Citation Envoyé par f-leb Voir le message
    bonjour,

    vite fait, cette solution semble marcher:

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    SELECT Table1.[AC SN],
           Table1.[AC FA],
           format(
           (SELECT Count([AC FA])
            FROM   Table1 AS T
            WHERE  T.[AC FA] = Table1.[AC FA]
                   AND T.[AC SN] < Table1.[AC SN])
           + 1 , "000") AS [AC no ordre]
    FROM   Table1
    WHERE  Table1.[AC FA] IS NOT NULL
    UNION
    SELECT Table1.[AC SN],
           Table1.[AC FA],
           NULL
    FROM   Table1
    WHERE  Table1.[AC FA] IS NULL
    ORDER  BY [AC FA],
              [AC SN];

  8. #8
    Membre régulier
    Inscrit en
    Octobre 2007
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 128
    Points : 76
    Points
    76
    Par défaut

    Passez de bonnes fetes de fin d'année !

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

Discussions similaires

  1. Comment dupliquer ligne suivant valeur Champ3
    Par toto92 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 15/01/2013, 19h17
  2. [CR9]Masquer des données (colonnes) suivant valeur champ
    Par neo.51 dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 05/09/2005, 09h43
  3. Comment vérifier que la valeur d'un champ soit unique?
    Par le lynx dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 04/05/2005, 14h11
  4. Comment changer dynamiquement la valeur d'une option de DbGrid ?
    Par Atrebate62 dans le forum Composants VCL
    Réponses: 4
    Dernier message: 17/03/2005, 13h35
  5. incrementer simplement une valeur ?
    Par jerz dans le forum Requêtes
    Réponses: 2
    Dernier message: 08/03/2004, 14h28

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