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 :

Transformer une requête SELECT en UPDATE


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Homme Profil pro
    Architecte technique
    Inscrit en
    Octobre 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2015
    Messages : 12
    Points : 14
    Points
    14
    Par défaut Transformer une requête SELECT en UPDATE
    Bonjour à tous,

    J'essaye de mettre à jour une table qui est sur serveur SQL server avec des informations venant d'un serveur qui est lié.

    J'ai commencé par faire une requête pour voir les champs que je dois mettre à jour.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Select m.[CODEBARRE] 
    FROM [IDWorks].[dbo].[UsersData2] m
    WHERE m.[CODEBARRE] <> (Select '*' + REPLACE(p.[CODEBARRE], char(32), '') + '*' AS CODEBARRE 
    						FROM srvlie.bd.dbo.nomtable p
    						WHERE p.[NOPARTC] = m.NOPARTC)
    Celle-ci me renvoie plus de 500 entrées, alors que la table a au moins 400000 entrées

    Je voudrais savoir quel est le moyen le plus simple pour mettre à jour ma table locale.

    J'ai essayé de faire un UPDATE avec comme clause mon SELECT, mais j'ai une erreur qui me dit : Subquery returned more than 1 value

    Je ne voudrais pas utiliser de cursor, car je voudrais mettre ça dans un job.

    Quelqu'un pourrait m'orienter, car je suis un peu perdu.

    Merci pour votre aide.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Points : 1 199
    Points
    1 199
    Par défaut
    Bonjour,
    Ton select devrait pouvoir se réécrire comme cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Select m.[CODEBARRE] 
    FROM [IDWorks].[dbo].[UsersData2] m
    inner join FROM srvlie.bd.dbo.nomtable p
    on p.[NOPARTC] = m.NOPARTC
    WHERE m.[CODEBARRE] <>  '*' + REPLACE(p.[CODEBARRE], char(32), '') + '*';
    Du coup, un update pourrait correspondre à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    update m
    set m.[CODEBARRE] =REPLACE(p.[CODEBARRE], char(32), '')
    FROM [IDWorks].[dbo].[UsersData2] m
    inner join srvlie.bd.dbo.nomtable p
    on p.[NOPARTC] = m.NOPARTC
    WHERE m.[CODEBARRE] <>  '*' + REPLACE(p.[CODEBARRE], char(32), '') + '*';
    Attention il faut que NOPARTC soit clé primaire ou soit unique dans srvlie.bd.dbo.nomtable p

    Bonne journée
    Soazig

  3. #3
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 086
    Points : 38 380
    Points
    38 380
    Billets dans le blog
    9
    Par défaut
    Vous avez tout ce qu'il faut pour avoir des temps de réponse catastrophiques : prédicat différent et fonctions de colonne, et semble -t- il un test d'existence mal construit

    Quelles sont les clefs de vos index sur les tables mises en œuvre, quels sont les volumes de ces tables et que cherchez vous à faire fonctionnellement ?

Discussions similaires

  1. [AC-2010] Joindre requêtes SELECT et UPDATE en une seule ? Et recheche sur valeurs "similaires".
    Par Mickey7312 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 07/08/2014, 00h16
  2. Update d'une table à partir d'une requéte selection
    Par Xorbane dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 16/03/2008, 19h30
  3. une requête SELECT INTO provoque un plantage sous Access
    Par Invité dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 29/12/2005, 12h35
  4. fusion de 2 colonnes dans une requête select?
    Par epeichette dans le forum Requêtes
    Réponses: 1
    Dernier message: 05/11/2005, 00h05
  5. C'est possible dans une requête SELECT ?
    Par Kokito dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/04/2005, 17h59

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