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

Langage SQL Discussion :

Problème de boucle


Sujet :

Langage SQL

  1. #1
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 253
    Points
    28 253
    Par défaut Problème de boucle
    J'ai un problème qui (je pense) est tout simple mais dont je n'arrive pas à me tripatouiller
    j'ai deux tables (simplifiées ici)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Table Reglement
    -----------------------------------
    id_reglement   |       date      |
    -----------------------------------
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Table Reglements_details
    ----------------------------------------------------------------------
    id_reglement_details   |       id_reglement      |    montant         |
    ----------------------------------------------------------------------

    a partir d'un id_reglement (clé primaire de la premiere table) je dois créer des reglements inverses des reglements de la seconde.

    Exemple: dans la seconde, j'ai:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ----------------------------------------------------------------------
    id_reglement_details   |       id_reglement      |    montant         |
    ----------------------------------------------------------------------
    1                      |             2           |       10           |
    ----------------------------------------------------------------------
    2                      |             2           |       20           |
    ----------------------------------------------------------------------

    je dois passer un id-reglement (ici 2) et cela doit m'inserer autant de reglements qu'il en existe deja (possedant cette id) en leur mettant la valeur inverse qu'ils avaient avant.
    je dois au final avoir cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    ----------------------------------------------------------------------
    id_reglement_details   |       id_reglement      |    montant         |
    ----------------------------------------------------------------------
    1                      |             2           |       10           |
    ----------------------------------------------------------------------
    2                      |             2           |       20           |
    ----------------------------------------------------------------------
    3                      |             2           |       -10          |
    ----------------------------------------------------------------------
    4                      |             2           |       -20          |
    ----------------------------------------------------------------------


    Je dois donc "boucler" sur les enregistrements, recuperer la valeur du montant (et les autres de l'enregistrement aussi) et le reimporter à l'identique, en changeant le montant (SANS ecraser le premier, je dois juste avoir un reglement normal et (parfois) son contraire).

    J'ai pensé à un curseur, mais est-ce la seule (meilleure) solution?
    De plus, depuis ce matin, j'ai la tete dans les requetes SQL et je m'embrouille dans tous les sens là et aucune de mes requêtes ne marche . Si une âme charitable pouvait m'aider

    d'avance merci

  2. #2
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    En supposant que tu as un trigger pour générer le id_reglement_details

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    INSERT INTO Table Reglements_details (id_reglement, Montant)
    SELECT Id_reglement, -montant
    FROM Table Reglements_details a
    WHERE NOT EXISTS (SELECT NULL FROM Table Reglements_details b
                      WHERE a.Id_reglement = b.id_reglement) AND a.Montant = -b.Montant)

  3. #3
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 253
    Points
    28 253
    Par défaut
    Ton code n'était pas exactement ce que je voulais mais tu ne connaissais pas les tables. Mais sinon il en était très proche et m'a très largement inspiré
    cela donne ca au final chez moi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    INSERT INTO dbo.T_REGLEMENT_DETAIL (rgd_montant, rgt_id, dos_id)
    SELECT     - T_REGLEMENT_DETAIL_1.rgd_montant AS Montant, 
                    @@Identity, 
                    T_REGLEMENT_DETAIL_1.dos_id
    FROM        dbo.T_REGLEMENT INNER JOIN
                    dbo.T_REGLEMENT_DETAIL AS T_REGLEMENT_DETAIL_1 ON      
                    dbo.T_REGLEMENT.rgt_id = T_REGLEMENT_DETAIL_1.rgt_id
    WHERE     (dbo.T_REGLEMENT.rgt_id = @RegId)
    en tout cas, un GROS MERCI mediat ;)

  4. #4
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Citation Envoyé par pharaonix
    en tout cas, un GROS MERCI mediat
    Pas de quoi (mais cela fait quand même plaisir d'être utile)

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 11/01/2006, 17h44
  2. Problème de boucles imbriquées
    Par Gnux dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 09/12/2005, 20h26
  3. [Tableaux] Problème avec boucle
    Par MYster dans le forum Langage
    Réponses: 6
    Dernier message: 11/11/2005, 18h39
  4. Problème de boucle
    Par TheUltimaSephiroth dans le forum C
    Réponses: 8
    Dernier message: 10/10/2005, 13h58
  5. Problème de boucle
    Par basclln dans le forum C++
    Réponses: 19
    Dernier message: 02/04/2005, 09h13

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