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 :

update avec deux tables différentes


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 26
    Points : 32
    Points
    32
    Par défaut update avec deux tables différentes
    bonjour, je travail sous sql server 2000, j'ai deux tables TABLE1 et TABLE2 elles ont toute les deux le champs niveau

    voici ce que je voudrais faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    if (select TABLE1.Niveau, TABLE2.Niveau 
    from TABLE1, TABLE2
    where "jointure ..."
    and TABLE1.NIveau < TABLE2.Niveau)
     
    begin
     
    update TABLE1
    set Niveau = (select Niveau from TABLE2)
    where Niveau = (select Niveau from TABLE1)
     
    end
    en gros c'est une mise a jour de mon niveau , mais il me marque toujour le meme message d'erreur :
    "La sous-requête a retourné plusieurs valeurs. Cela n'est pas autorisé quand la sous-requête suit =, !=, <, <= , >, >= ou quand elle est utilisée en tant qu'expression."
    pourtant je n'ai qu'une ligne d'affecté , est ce que vous auriez une idée ? , merci d'avance, bonne journée !

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Points : 965
    Points
    965
    Par défaut
    Il vous faut une colonne sur laquelle vous appuyer pour trouver les niveaux de TABLE2 correspondant à ceux de votre TABLE1. Une colonne id par exemple.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    UPDATE TABLE1
    SET Niveau = (SELECT Niveau 
                  FROM TABLE2
                  WHERE TABLE2.id = TABLE1.id
                  )
    Je ne sais pas si vous l'avez déjà fait, mais vous devriez prendre le temps de lire les tutos SQL à votre disposition, ça vous ferait gagner du temps.

  3. #3
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 394
    Points
    18 394
    Par défaut
    Il manque le where exists, sans lui toute la table1 sera mise à jour, avec niveau à null pour ceux qui n'existent pas dans table2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    UPDATE TABLE1
    SET Niveau = (SELECT Niveau FROM TABLE2
                  WHERE TABLE2.id = TABLE1.id)
    WHERE EXISTS (select null FROM TABLE2
                  WHERE TABLE2.id = TABLE1.id)

  4. #4
    Expert éminent sénior
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Ou bien avec une jointure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE TABLE1 t1
    INNER JOIN TABLE2 t2 ON t1.id = t2.id
    SET t1.Niveau = t2.Niveau

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 26
    Points : 32
    Points
    32
    Par défaut c'est bon
    merci beaucoup pour toutes ces informations, sa marche

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

Discussions similaires

  1. Calcul avec deux tables différentes
    Par challe dans le forum SAS Base
    Réponses: 3
    Dernier message: 11/07/2011, 16h30
  2. Update avec deux tables... syntaxe normalisée ?
    Par Yves Archambault dans le forum Langage SQL
    Réponses: 2
    Dernier message: 03/02/2009, 21h46
  3. Update avec deux tables
    Par pasbonte dans le forum Requêtes
    Réponses: 2
    Dernier message: 11/01/2009, 23h01
  4. Réponses: 8
    Dernier message: 13/03/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