Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Développement
Développement Forum d'entraide sur le Transact-SQL, le CLR, les procédures stockées, les triggers, les requêtes SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/09/2008, 14h52   #1
Invité de passage
 
Inscription : septembre 2008
Messages : 2
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 2
Points : 0
Points : 0
Par défaut Créer un Update multi valeur

Bonjour à tous.

Je dois exécuter la requête ci-dessous environ 3800 fois en fonction de le variable que j’ai nommée dans mon exemple @variable (1,2,3 …….., 3800). Je souhaiterai donc savoir comment puis-je faire cette requête sans bien entendu l’exécuter autant de fois . J’ai pensé à passer par un curseur (???) si c’est le cas mais je ne maitrise malheureusement pas cette fonction.
Ou y’a-t-il une autre solution ???

update base1.dbo.f_comptet set ct_numcentrale = (select distinct (cast(f28 as numeric))
from base2.dbo.f_represent rec
left outer join base1.dbo.f_represent red
on rec.re_nom = red.re_nom and rec.re_prenom = red.re_prenom
left outer join base3.dbo.feuil1$ ex
on rec.re_no = ex.re_no
left outer join base1.dbo.f_comptet ct
on red.re_no = ct.re_no
where rec.re_no = @Variable)

where re_no = (select distinct(red.re_no)
from base2.dbo.f_represent rec
left outer join base1.dbo.f_represent red
on rec.re_nom = red.re_nom and rec.re_prenom = red.re_prenom
left outer join base3.dbo.feuil1$ ex
on rec.re_no = ex.re_no
left outer join base1.dbo.f_comptet ct
on red.re_no = ct.re_no
where rec.re_no = @Variable)

Par avance je vous remercie
BeWiiMyFred est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/09/2008, 17h57   #2
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 959
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 959
Points : 17 792
Points : 17 792
créez une table temporaires et stockez y toutes vos données et liez là avec le reste.

Au passage je perçoit (?) une jointure avec une feuille EXCEL ??? Est-ce le cas ??? Si oui, vous devriez éviter absolument cela !Sauf si vous entrevoyez le fait de pourrir la vue de tous vos utilisateurs du fait des attentes de verrous !

A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/09/2008, 15h10   #3
Invité de passage
 
Inscription : septembre 2008
Messages : 2
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 2
Points : 0
Points : 0
Bonjour,

Merci pour votre réponse, en revanche je ne la comprends pas.
Que dois-je y stocker et la lier avec quoi ??

J’ai essayé de transformer mon champ @variable en une table qui contient une colonne de 1 à 3800 que j’ai ensuite introduit par un select dans ma formule.
Formule:
select (cast(champ1 as numeric)) from prescripteur.dbo.résultats) à la place de @variable

Mais bien entendu comme cette table retourne plusieurs valeurs, il ne veut évidemment pas l’exécuter et l'instruction a été arrêtée.

En revanche, je n’ai fait aucun lien avec un fichier Excel. Ce ne sont que des bases et des tables SQL. (Mais la table Feuil1$ est bien issue d’un import d’Excel).

Cordialement,
BeWiiMyFred est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h44.


 
 
 
 
Partenaires

Hébergement Web