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 :

requête ajout spéciale


Sujet :

Requêtes et SQL.

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 8
    Points : 3
    Points
    3
    Par défaut requête ajout spéciale
    Bonjour à tous
    j'aimerai faire une requête ajout spéciale a partir d'une table
    Data(nom;prénom;boisson 1; boisson 2 ; boisson 3; boisson 4 .... boisson N)
    qui ajouterai vers une table Sortie (nom;prénom;boisson)

    Si dans un enregistrement de la table Data il y a 4 boissons
    j'aurai 4 lignes dans ma table de sortie

    Par exemple
    Dupond ; Jean ; coca ; fanta ; sprite

    donnerai
    Dupond ; Jean ; coca
    Dupond ; Jean ; fanta
    Dupond ; Jean ; sprite



    je sais le faire avec N requêtes mais pas avec une seule requête

    merci
    Fodan

  2. #2
    Membre du Club
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 68
    Points : 57
    Points
    57
    Par défaut
    Salut

    Je crois que j'ai une solutions à te proposer, pas la plus élégante mais c'est pas ça l'important :

    Utilise une requete union, un peu de ce genre la :

    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
     
     
    SELECT 
            Data.[Nom], Data.[Prénom], Data.[Boisson 1]
    FROM DATA
    Where (DATA.[Boisson 1] <> Null)
     
    UNION SELECT 
             Data.[Nom], Data.[Prénom], Data.[Boisson 2]
    FROM DATA
    Where (DATA.[Boisson 2] <> Null)
     
    ' ainsi de suite '
     
    UNION SELECT 
             Data.[Nom], Data.[Prénom], Data.[Boisson 67897897]
    FROM DATA
    Where (DATA.[Boisson 67897897] <> Null);
    De cette manière tu devrai avoir la requête que tu cherche. Je n'ai pas testé mais je pense que ça doit fonctionner.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Un grand merci NiKoTiNe pour cette solution !!!
    je viens de la tester et ca marche bien
    j'obtiens la sélection que je voulais!


    pour allez un peu plus loin,
    est ce que tu sais si on peut faire une boucle (le champs boisson a 99 occurrences) en mettant un arrêt si le champs est vide (car si boisson N vide alors tout ceux après sont vides) , je ne suis pas une lumière en SQL et VBA

    grand merci
    Fodan

  4. #4
    Membre du Club
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 68
    Points : 57
    Points
    57
    Par défaut
    Je ne connais vraiment pas bien le sql mais il ne me semble pas que les boucles soient une solution dans ce langage. Peut-être que quelqu'un d'un peu plus renseigné pourra te répondre...

    En vba par contre tout est possible , cet aprem si j'ai un peu de temps, je réflechirai à ton truc.

    A plus

  5. #5
    Membre du Club
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 68
    Points : 57
    Points
    57
    Par défaut
    En gros ca doit donner cela :

    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
     
     
    ' Remplis une table (Fin) en fonction des valeurs contenues dans une autres (Source)'
    Function Boisson(Source As String, Fin As String)
        'Definition'
        Dim starttable As Recordset
        Dim endtable As Recordset
        Dim I As Integer, j As Integer, k As Integer
     
        Set starttable = currentdb.OpenRecordset(Source)
        Set endtable = currentdb.OpenRecordset(Fin)
     
        starttable.MoveFirst
        For I = 1 To starttable.RecordCount         'parcourst tous les enregistrement de la table de départ'
     
            k = 0
            j = 1
            Do
                If starttable.Fields("Boisson" & Str(j)) <> Null Then ' quand une boisson existe'
                    endtable.AddNew                                   ' créer une nouvelle ligne dans la table de fin'
                    endtable.Fields("Nom") = starttable.Fields("Nom") ' la remplir'
                    endtable.Fields("Prénom") = startable.Fields("Prénom")
                    endtable.Fields("Boisson") = starttable.Fields("Boisson" & Str(j))
                    endtable.Update
                Else
                    k = 1                                             ' si il n y a plus de boissons on sort de la boucle'
                End If
                j = j + 1
            Loop While k = 0
        starttable.MoveNext
        Next I
    End Function
    J'ai écrit cela freestyle sans y tester mais l'idée principale doit être bonne, à toi d'adapter le code si tu veux utiliser cette méthode.

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Merci NiKoTiNe
    je teste ca demain et je te tiens au courant
    @+

Discussions similaires

  1. [VB]requête ajout
    Par os_rouen dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 08/02/2006, 15h06
  2. Problème avec requête ajout
    Par mitnick32 dans le forum Access
    Réponses: 1
    Dernier message: 02/02/2006, 19h02
  3. [requête ajout]violation de clés
    Par Elro6475 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 01/02/2006, 13h37
  4. Réponses: 15
    Dernier message: 27/11/2005, 17h37
  5. requête Ajout
    Par lious dans le forum Langage SQL
    Réponses: 7
    Dernier message: 19/08/2004, 12h05

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