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 :

Mise à jour de tables à partir d'une autre un peu compliquée..


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 179
    Points : 45
    Points
    45
    Par défaut Mise à jour de tables à partir d'une autre un peu compliquée..
    Bonjour à tous !!

    J'ai un soucis avec 2 tables, voici ma structure:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    tab1
    
    champs: nom, prenom, datenaiss, datedbt, numrue, type rue, rue
    
    Seuls nom, prenom, datenaiss sont complétés
    
    tab2
    
    champs: nom, prenom, datedbt, numrue, type rue, rue
    
    Tous les champs sont complétés
    Je voudrais mettre à jour tab1 à partir de tab2, c'est à dire copier les champs datedbt, numrue, type rue, rue de tab2 dans tab1 si le nom et le prenom sont identiques dans tab1 et tab 2.

    Je n'arrive pas à construire le code SQL, pouvez vous m'aider ?

    Merci d'avance!
    RedVivi

  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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    UPDATE tab1
    SET    (datedbt, numrue, type_rue, rue) = (SELECT datedbt, numrue, type_rue, rue
                                               FROM   tab2 As T
                                               WHERE  (tab1.nom, tab1.prenom) = (T.nom, T.prenom))
    Cette syntaxe SQL normative utilise le concept de Row Value Constructor qui n'est pas supporté par tous les SGBDR.
    Voir l'article que j'ai écrit à ce sujet :
    http://sqlpro.developpez.com/cours/sqlaz/select/#L8

    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/ * * * * *

  3. #3
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 179
    Points : 45
    Points
    45
    Par défaut
    Est-ce pour ce motif que j'ai cette erreur là ??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Error
    SQL query: 
     
    UPDATE tab1SET( datedbt, numrue, TYPE rue, rue ) = ( SELECT datedbt, numrue, 
    TYPE rue, rue
    FROM tab2 AS T
    WHERE (
    tab1.nom, tab1.prenom
    ) = ( T.nom, T.prenom ) )
     
    MySQL said: 
     
    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(datedbt, numrue, type rue, rue) = (SELECT datedbt, numrue, type rue, rue FROM  ' at line 2

    Merci d'avance,
    RedVivi

  4. #4
    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
    A l'évidence oui, mysql étant assez limité en syntaxe SQL.

    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/ * * * * *

  5. #5
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 179
    Points : 45
    Points
    45
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    A l'évidence oui, mysql étant assez limité en syntaxe SQL.

    A +
    Celà signifie -t-il qu'il n'y a aucun moyen de réaliser la manipulation que je souhaite ?

  6. #6
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Points : 2 579
    Points
    2 579
    Par défaut
    Utilisez la syntaxe multi table de l'update MySQL : http://dev.mysql.com/doc/refman/5.0/fr/update.html

  7. #7
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 179
    Points : 45
    Points
    45
    Par défaut
    Bon...j'ai essayé de bricoler un truc mais ça marche pas terrible:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE tab1,tab2 SET (tab1.datedbt=tab2.datedbt)
    WHERE (tab1.nom=tab2.nom AND tab1.prenom=tab2.prenom);

    J'ai essayé sur un champ (datedbt), mais cette commande me renvoie une erreur de syntaxe (je vous prie de m'excuser, je débute en SQL...)

    Merci d'avance !

Discussions similaires

  1. [2008R2] Mise à jour de table à partir d'une autre
    Par Djunweb dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 15/10/2014, 13h22
  2. Mise à jour colonne vide à partir d'une autre colonne
    Par Ordonnateur dans le forum Oracle
    Réponses: 2
    Dernier message: 08/11/2011, 10h32
  3. Réponses: 1
    Dernier message: 08/07/2009, 11h52
  4. Mise à jour de données à partir d'une autre table
    Par rsc dans le forum Langage SQL
    Réponses: 7
    Dernier message: 05/04/2006, 10h53
  5. Réponses: 5
    Dernier message: 06/01/2005, 12h07

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