Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Besoin d'aide avecUPDATE et BOUCLE [ SQL Server, MSDE, SQL Express / Débutant(s) ] (johann36)

mercredi 6 août 2008 à 15:09:47 | Besoin d'aide avecUPDATE et BOUCLE

johann36

Membre Club
Bonjour,

J'ai un gros soucis et je bloque dessus depuis ce matin sans trouver la réponse.
J'essaie de faire une boucle avec une requête UPDATE, je m'explique :

J'ai crée une colonne NumLigne et je voudrai mettre dans cette colonne le n° de la ligne de ma table, c'est pourquoi j'utilise une boucle WHILE mais le problème c'est que cela ne fonctionne pas.

Voici le code :

DECLARE @Cpt INT;

SET @Cpt = 0;

WHILE @Cpt < (SELECT COUNT(*) FROM TI_Ventes)
    Begin
         UPDATE TI_Ventes SET NumLigne = @Cpt, IdDate_T1 = CAST (PLL_IdCommande as CHAR(6)) +                        CAST(YEAR(PLL_DateLivraison) as CHAR (4)) + CAST(MONTH(PLL_DateLivraison) as CHAR (2));

        SET @Cpt = @Cpt + 1;
END

Ce qui ce passe c'est que la requête met à jour le contenu de ma table à chaque passage dans la boucle.

Ex :

Si j'ai 5 lignes et bien je vais avoir une boucle qui va s'exécuter 5 fois et la mise à jour va me mettre 5 fois l'ensemble de la table à jour ce qui au final me mettra 5 partout dans la colonne NumLigne.

Si vous pouviez m'aider car là je bloque.

Merci d'avance.

Johann36


mercredi 6 août 2008 à 17:56:21 | Re : Besoin d'aide avecUPDATE et BOUCLE

crn_c21

Réponse acceptée !
Dans ton UPDATE n'aurais-tu pas oublier une clause WHERE par Hasard??

mercredi 6 août 2008 à 19:54:44 | Re : Besoin d'aide avecUPDATE et BOUCLE

johann36

Membre Club
Merci crn_c21 pour ta réponse,

En fait j'ai une table Vente et une table facture mais aucune relation entre les deux.
J'avais donc créé une colonne index contenant la concaténation du n° de facture avec les 4 chiffres de l'année + les 2 chiffres du mois.

[U]Détails :[/U]

[B]Table Vente[/B]
171366|2008-01-25|25.000|25.000|1569700|CS40|17136620081
171366|2008-02-22|25.000|25.000|1569700|CS40|17136620082
171366|2008-04-04|25.000|25.000|1569700|CS40|17136620084
171366|2008-04-18|25.000|25.000|1569700|CS40|17136620084
171366|2008-06-13|25.000|25.000|1569700|CS40|17136620086

[B]Table Facture[/B]
200801|2008-01-22|0810470|1569700|171366|8103|121|CS40|17136620081
200802|2008-02-19|0818600|1569700|171366|8103|121|CS40|17136620082
200804|2008-04-03|0831160|1569700|171366|8103|121|CS40|17136620084
200804|2008-04-15|0834040|1569700|171366|8103|121|CS40|17136620084
200806|2008-06-12|0850220|1569700|171366|8103|121|CS40|17136620086

Le soucis c'est que lorsque j'exécute la requête suivante :
"SELECT * FROM Ventes left outer JOIN Factures ON IdDate_T1 like IdDate_T2 WHERE FAC_DateFacture < PLL_DateLivraison order by IdDate_T2"
(En fait ce que je demande c'est de concaténer la table Vente et Facture  avec comme condition que la date de Facture soit inférieur à la date de livraison) je me retrouve avec des doublons.

Je cherche une solution pour que cela fonctionne correctement mais sans relation entre les deux cela devient compliqué.

Est-ce que tu aurais une idée à ce problème qui effectivement est un problème ?

Merci d'avance.

Jb_One73

mercredi 6 août 2008 à 23:38:00 | Re : Besoin d'aide avecUPDATE et BOUCLE

crn_c21

Tu as essayé avec un SELECT DISTINCT ?




Cette discussion est classé dans : boucle, table, colonne, cpt, numligne


Répondre à ce message

Sujets en rapport avec ce message

insertion de nombre de 1 à N [ par ftug ] Bonjour,j'aimerai inserer dans une table des nombre de 1 à N avec le moins de requetes possible ( le serveur SQL est déjà bien chargé )pour l'instant Optimisation de requete [ par Antilope ] Bonjour,J'effectue une boucle sur un cursor puis à l'interieur de la boucle un insert dans une table.Du type :for r1 in c1 loop   ......   insert into Ajout d'une colonne de type non null [ par RMI ] Bonjour, Je souhaite ajouter un colonne de type non null dans une table déjà existante, cette colonne ne doit pas avoir de valeur par défaut. renommer une colonne [ par SuperBouly ] bonjour, Je travaille avec VS2005 en VB.Net.Je désire renommer une colonne d'une table ACCESS. J'ai essayé la commande:"ALTER TABLE MaTab Hébreu [ par fdouieb ] Bonjour,Je doit creer une Table Client qui possede un colonne "nom" en anglais et une colonne "nom" en hébreu.J'ai utilisé la notion de classement lor Pivot [ par celinette85 ] Bonjour, Est-il possible de créer un pivot dans une base développée sous ACCESS 2000 ?J'ai essayé avec la structure  :Transformm count (table.colonne) maj d'une table a partir d'une autre [ par christobal ] bonjour, j'ai fait des recherche sur le web mais rien de concluant.J'aimerais mettre a jour la colonne password et pseudo de ma table abonnees avec le Colonne Table SQL 2000 [ par anspauldou ] SalutJe voudrai savoir s'il est possible en MS SQL2000 d'avoir une colonne en lecture seul dans ma table afin d'empêcher quiconque d'effectuer une mod Entrer des valeurs différentes dans une colonne [ par DjanGoJack ] Bonjour a tous,Ma base de données sql regroupe tous les patients d'un hopital et tous les examens qu'ils ont eus.Je dispose d'une table sql nommé ANTE Nom d'une colonne [ par NoOneElse ] salut,je développe une application de traçage d'une base de donnée Oracle où je peut crée des TRIGGER a partir d'un nom d'une table existe dans la bas


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,156 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.