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

MS SQL Server Discussion :

Update de plusieurs lignes


Sujet :

MS SQL Server

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 15
    Points : 12
    Points
    12
    Par défaut Update de plusieurs lignes
    Bonjour,

    j'essaie de mettre à jour des ID en bloque suivant une requête SQL suivante. J'ai une erreur de clé, lorsque j'execute la requête.

    J'ai plusieurs ligne dans mon FROM, mais unique...Donc je ne vois pas pourquoi cela plante.

    begin transaction
    update AsiaCounterED.dbo.RSys_Table_Fields
    set Table_Fields_Id = [New Table].Table_Fields_Id
    from
    AsiaCounterED.dbo.Tableed /*LEFT OUTER*/ inner JOIN
    [New Table] ON
    AsiaCounterED.dbo.Tableed.Field_Name = [New Table].Field_Name and
    AsiaCounterED.dbo.Tableed.Table_Name = [New Table].Table_Name
    where
    (AsiaCounterED.dbo.Tableed.Tables_Id <> [New Table].TABLES_ID or
    AsiaCounterED.dbo.Tableed.Table_Fields_Id <> [New Table].Table_Fields_Id
    and AsiaCounterED.dbo.RSys_Table_Fields.Table_Fields_Id
    = AsiaCounterED.dbo.Tableed.Table_Fields_Id)

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 848
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 848
    Points : 52 966
    Points
    52 966
    Billets dans le blog
    6
    Par défaut
    Vous utilisez une table dans la clause WHERE qui n'est pas présente dans la clause FROM. Il faut d'abord joindre la table avant de pouvoir en utiliser une quelconque colonne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    update AsiaCounterED.dbo.RSys_Table_Fields
    set    Table_Fields_Id = [New Table].Table_Fields_Id 
     
    from   AsiaCounterED.dbo.Tableed AS T
           /*LEFT OUTER*/ inner JOIN [New Table] AS NT
                  ON T.Field_Name = NT.Field_Name 
                  AND T.Table_Name = NT.Table_Name 
     
           ??? JOIN AsiaCounterED.dbo.RSys_Table_Fields AS RTF
                  ON RTF.Table_Fields_Id = T.Table_Fields_Id
     
    where T.Tables_Id <> NT.TABLES_ID 
    OR    T.Table_Fields_Id <> NT.Table_Fields_Id
    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

Discussions similaires

  1. ON DUPLICATE KEY UPDATE pour plusieurs lignes
    Par raphael_kindt dans le forum Requêtes
    Réponses: 1
    Dernier message: 09/11/2009, 12h45
  2. [MySQL] Update de plusieurs lignes en php
    Par Fredy007 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 19/07/2009, 03h38
  3. [SQL] update sur plusieurs lignes
    Par Hurin dans le forum Langage SQL
    Réponses: 8
    Dernier message: 04/08/2008, 16h37
  4. Réponses: 2
    Dernier message: 09/04/2007, 10h21
  5. Update sur plusieurs lignes
    Par JOUCHET dans le forum Oracle
    Réponses: 1
    Dernier message: 20/05/2006, 18h37

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