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 et SELECT


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Inscrit en
    Mai 2009
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 68
    Points : 46
    Points
    46
    Par défaut UPDATE et SELECT
    Bonjour,

    J ai deux tables comparables nom/prenom/importance.
    Je voudrais remplacer le champ importance de la table 2 par celui de la table 1 quand nom et prenom sont identique.

    J ai essaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE Table2
    SET Table2.Importance = SELECT(Table1.Importance FROM Table1 
    WHERE Table2.Prenom = Table1.Prenom AND Table2.Nom = Table1.Nom)
    Sans succes...
    Merci pour votre aide !

  2. #2
    Membre confirmé Avatar de agemis31
    Profil pro
    DBA
    Inscrit en
    Octobre 2007
    Messages
    399
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : DBA

    Informations forums :
    Inscription : Octobre 2007
    Messages : 399
    Points : 478
    Points
    478
    Par défaut
    Bonsoir,

    Le problème vient d'une parenthèse mal placée et du fait que vous mettez toujours à jour table2, même en l'absence de correspondance dans table1.

    Un essai en SQL normatif

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    UPDATE Table2
    SET Table2.Importance = (SELECT Table1.Importance FROM Table1 
    WHERE Table2.Prenom = Table1.Prenom AND Table2.Nom = Table1.Nom)
    WHERE EXISTS (SELECT 1 FROM Table1 
    WHERE Table2.Prenom = Table1.Prenom AND Table2.Nom = Table1.Nom)
    Sous SQL Serveur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    UPDATE Table2 
    SET Importance = table1.importance
    FROM table1 JOIN Table2 
    ON Table2.Prenom = table1.Prenom AND Table2.Nom = table1.Nom
    @+

  3. #3
    Membre du Club
    Inscrit en
    Mai 2009
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 68
    Points : 46
    Points
    46
    Par défaut Merci !
    Merci !

    Question stupide: faut il conserver la ligne 3 du code ? j ai l impression (...) qu il y a redondance avec les lignes 4 & 5.

    A quoi fait reference le "1" dans le code (ligne 4) ?

  4. #4
    Membre confirmé Avatar de agemis31
    Profil pro
    DBA
    Inscrit en
    Octobre 2007
    Messages
    399
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : DBA

    Informations forums :
    Inscription : Octobre 2007
    Messages : 399
    Points : 478
    Points
    478
    Par défaut
    Bonsoir,

    Pour la ligne 3, oui, c'est qu'on met dans "Importance". Les lignes 4 et 5 ne servent qu'a s'assurer qu'on y mette pas de null.
    Rq: ca doit pouvoir se faire plus joliment.

    Le 1 c'est une colonne bidon puisque seule l'existence nous intéresse, c'est plus rapide.

    @+

  5. #5
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    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 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    La syntaxe avec JOIN me semble normativement bonne, plus courte et plus élégante que la première donc utilise là.

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

Discussions similaires

  1. update et select en une seule fois
    Par laloupiote dans le forum Requêtes
    Réponses: 1
    Dernier message: 15/06/2007, 15h58
  2. LIMIT dans UPDATE vs SELECT
    Par Yadutaf dans le forum Requêtes
    Réponses: 3
    Dernier message: 12/04/2007, 20h36
  3. Update et select
    Par Arola78 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 21/09/2006, 14h07
  4. [Debutant] UPDATE et SELECT
    Par zooffy dans le forum Langage SQL
    Réponses: 3
    Dernier message: 24/06/2006, 16h19
  5. [Oracle9i/ Pl/Sql] Update et select en même temps
    Par shaun_the_sheep dans le forum Oracle
    Réponses: 7
    Dernier message: 31/05/2005, 17h26

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