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 :

jointure sur quantité dans champ


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai
    Homme Profil pro
    Responsable d'exploitation informatique
    Inscrit en
    Septembre 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Responsable d'exploitation informatique

    Informations forums :
    Inscription : Septembre 2015
    Messages : 18
    Points : 15
    Points
    15
    Par défaut jointure sur quantité dans champ
    Bonsoir,

    dans un programme d’édition, nous avons besoin de créer une requête qui renvoie le CODEBARRE le nombre de fois qu'il est noté dans le champ QTE

    par exemple

    !--------------!-----!
    !CODEBARRE!QTE !
    !--------------!-----!
    !358031232 !4 !
    !--------------!-----!
    !358031245 !2 !
    !--------------!-----!
    !358031264 !3 !
    !--------------!-----!

    devrait retourner
    358031232
    358031232
    358031232
    358031232
    358031245
    358031245
    358031264
    358031264
    358031264

    ça ne parait pas méchant, mais je ne m'en sors pas avec le SQL d'ACCESS, même en essayant avec une TALLY TABLE

    est-ce que quelqu'un pourrait me donner une piste, svp?

    merci

  2. #2
    Membre éprouvé
    Inscrit en
    Août 2008
    Messages
    740
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 740
    Points : 1 045
    Points
    1 045
    Par défaut
    Bonjour,

    ça ne parait pas bien méchant en effet, on peut faire en VBA

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Public Function GenerationCB()
    Dim rst As DAO.Recordset
    Dim i As Integer
            Set rst = CurrentDb.OpenRecordset("select * from SOURCE", dbOpenSnapshot)
            While Not rst.EOF
                For i = 1 To rst("QTE")
                    'creation de la ligne rst("CODEBARRE")
                Next i
                rst.MoveNext
            Wend
    rst.Close: Set rst = Nothing
    End Function

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


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 620
    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 620
    Points : 56 862
    Points
    56 862
    Billets dans le blog
    40

  4. #4
    Membre à l'essai
    Homme Profil pro
    Responsable d'exploitation informatique
    Inscrit en
    Septembre 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Responsable d'exploitation informatique

    Informations forums :
    Inscription : Septembre 2015
    Messages : 18
    Points : 15
    Points
    15
    Par défaut
    merci à toi pour ta réponse
    j'ai bien songé à utiliser le VB.net (mon application est sous VBnet et utilise une base access)
    mais étant donné la complexité de la requête qui permet de générer les 2 colonnes CODEBARRE et QTE, je souhaite continuer en SQL pur.

  5. #5
    Membre émérite Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Points : 2 286
    Points
    2 286
    Par défaut
    Dans la genre artillerie lourde / dépannage et ... requête limitée en terme d'usage
    ici on gère les quantités jusque 4 ...
    Bon c'est juste histoire de me réveiller par cette journée qui s'annonce maussade ...

    Code : 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    SELECT t.codebarre, '0'
    FROM table1 t inner join table1 t1
    on t.codebarre = t1 .codebarre
    and t.qte = t1.qte 
     
    union 
     
    SELECT t.codebarre, '1'
    FROM table1 t inner join table1 t1
    on t.codebarre = t1 .codebarre
    and t.qte-1 = t1.qte-1 AND
    t.qte > 1
     
    union 
     
    SELECT t.codebarre, '2'
    FROM table1 t inner join table1 t1
    on t.codebarre = t1 .codebarre
    and t.qte-2 = t1.qte-2 AND
    t.qte > 2
     
    union
     
    SELECT t.codebarre, '3'
    FROM table1 t inner join table1 t1
    on t.codebarre = t1 .codebarre
    and t.qte-3 = t1.qte-3 AND
    t.qte > 3
     
    union
     
    SELECT t.codebarre, '4'
    FROM table1 t inner join table1 t1
    on t.codebarre = t1 .codebarre
    and t.qte-4 = t1.qte-4 AND
    t.qte > 4
    Emérite, émérite je ne pense pas ... plutôt dans le développement depuis FORT FORT longtemps, c'est mon job, ça oui
    A part ça ... Il ne pleut jamais en Moselle !

  6. #6
    Membre à l'essai
    Homme Profil pro
    Responsable d'exploitation informatique
    Inscrit en
    Septembre 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Responsable d'exploitation informatique

    Informations forums :
    Inscription : Septembre 2015
    Messages : 18
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par f-leb Voir le message
    Bonjour,
    Ceci correspond à mon besoin, mais je ne m'en sors pas en créant la "tally table"
    la requête ne donne pas ce que j'attends...

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


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 620
    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 620
    Points : 56 862
    Points
    56 862
    Billets dans le blog
    40
    Par défaut
    Bonjour,

    Avec une table Comptage(N°), N°=1, 2, 3...

    Cela donne quelque chose comme :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT CODEBARRE.numCodeBarre
    FROM CODEBARRE, COMPTAGE
    WHERE COMPTAGE.N°<=CODEBARRE.qte;

  8. #8
    Membre émérite Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Points : 2 286
    Points
    2 286
    Par défaut
    Citation Envoyé par f-leb Voir le message
    Bonjour,

    Avec une table Comptage(N°), N°=1, 2, 3...

    Cela donne quelque chose comme :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT CODEBARRE.numCodeBarre
    FROM CODEBARRE, COMPTAGE
    WHERE COMPTAGE.N°<=CODEBARRE.qte;
    ça c'est plutôt une bonne solution : Bravo !
    Emérite, émérite je ne pense pas ... plutôt dans le développement depuis FORT FORT longtemps, c'est mon job, ça oui
    A part ça ... Il ne pleut jamais en Moselle !

  9. #9
    Membre à l'essai
    Homme Profil pro
    Responsable d'exploitation informatique
    Inscrit en
    Septembre 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Responsable d'exploitation informatique

    Informations forums :
    Inscription : Septembre 2015
    Messages : 18
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par f-leb Voir le message
    Bonjour,

    Avec une table Comptage(N°), N°=1, 2, 3...

    Cela donne quelque chose comme :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT CODEBARRE.numCodeBarre
    FROM CODEBARRE, COMPTAGE
    WHERE COMPTAGE.N°<=CODEBARRE.qte;
    C'est exactement ce qu'il me fallait
    merci!
    et effectivement, ce n'était pas bien méchant, une fois qu'on a la solution!
    je n'avais pas compris jusque la le fonctionnement de la table de comptage...

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 05/07/2007, 08h53
  2. jointure sur champ avec multiple valeur
    Par robert_trudel dans le forum Langage SQL
    Réponses: 2
    Dernier message: 02/05/2007, 17h40
  3. Réponses: 1
    Dernier message: 09/11/2006, 12h08
  4. Update dans SYBASE avec jointure sur 2 colonnes
    Par metheorn dans le forum Sybase
    Réponses: 2
    Dernier message: 24/06/2005, 16h51
  5. Jointure sur un champ de type nchar ?
    Par webtheque dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 09/02/2005, 14h46

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