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 :

Comment faire ma jointure insert ?


Sujet :

Langage SQL

  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Août 2008
    Messages
    1 191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 1 191
    Points : 595
    Points
    595
    Par défaut Comment faire ma jointure insert ?
    Bonsoir, je souhaite mettre à jour 2 champs dans 2 tables
    voici ce que j'ai essayé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    UPDATE 
    A.adresses, P.personnes
    SET 
    A.nom_rue="larue",P.prenom="leprelnom" 
    ON
    A.id_personne = P.id_personne 
    WHERE 
    A.id_adresse=2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #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 'ON A.id_personne = P.id_personne WHERE A.id_adresse=2' at line 5
    c'est ma première tentative d'une mise à jour avec un jointure ,

    Comment dois-je modifier ma requête pour qu'elle fonctionne

    je vous remercie d'avance pour la réponse.

  2. #2
    Membre éprouvé Avatar de Oishiiii
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2009
    Messages
    508
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Août 2009
    Messages : 508
    Points : 1 104
    Points
    1 104
    Par défaut
    Bonsoir,

    Une chaînes de caractère s'encadre d'apostrophes et non de guillemets.

    J'ai un doute sur les préfixes A et P dans la clause UPDATE; ils ne sont pas définit.

    Je ne crois pas qu'on puisse utiliser le mot ON dans l'UPDATE.

    Essayez ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    UPDATE adresses AS A, personnes AS P
    SET A.nom_rue = 'larue'
      , P.prenom = 'leprelnom'
    WHERE A.id_personne = P.id_personne
      AND A.id_adresse = 2
    Essayez de créer vos sujets dans le forum de votre SGBD (MySQL).

  3. #3
    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 : 60
    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 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Je crois que la syntaxe multi-tables est en fait utilisée pour faire une jointure à la mode ancienne. UPDATE n'opère que sur une seule table si je ne m'abuse, comme disait le docteur !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    -- Exemple figurant dans la doc MySQL
    UPDATE items,month 
    SET items.price=month.price
    WHERE items.id=month.id;
    -- Equivalent avec jointure normalisée
    UPDATE items i
    INNER JOIN month m ON m.id = i.id
    SET i.price = m.price
    => Seule la table items est mise à jour
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  4. #4
    Membre éprouvé Avatar de Oishiiii
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2009
    Messages
    508
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Août 2009
    Messages : 508
    Points : 1 104
    Points
    1 104
    Par défaut
    Aussi surprenant que cela puisse paraître CinePhil, il me semble justement que MySQL peut mettre à jour les deux tables, avec une seule requête.

    Je vais tester, je reviens.

    Ça passe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    -- select @@version;
    -- 5.1.44
     
    CREATE TABLE t1 (
     t1_id integer
    ,t1_valeur char(3) );
     
    CREATE TABLE t2 (
     t2_id integer
    ,t2_valeur char(3) );
     
    insert into t1 values (1, 'abc'), (2, 'def');
    insert into t2 values (5, 'jkl'), (1, 'ghi');
     
    update t1, t2
    set t1_valeur = 'xyz'
    , t2_id = 99
    where t1_id = t2_id;
     
    select t1_id, t1_valeur, 't1' AS tableName
    from t1
    union
    select t2_id, t2_valeur, 't2' AS tableName
    from t2;

  5. #5
    Membre confirmé

    Profil pro
    Inscrit en
    Août 2008
    Messages
    1 191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 1 191
    Points : 595
    Points
    595
    Par défaut
    merci de ces réponse

    j'ai essayé ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    UPDATE 
    adresses, personnes
    SET 
    adresses_nom_rue='larue',personnes_prenom='leprelnom' 
    WHERE
    adresses_id_personne = personnes_id_personne 
     
    #1054 - Unknown column 'adresses_nom_rue' in 'field list'
    il faut encore ajouter un autre where pour modifier l'id_personne = 2 ?

    ça m'a l'aire d'être chaud , car là je n'ai mis que 2 tables mai en réalité il y a beaucoup plus
    peut être qu'il faut je fasse plusieurs update pour chaque table ? ça sera plus simple pour moi?

  6. #6
    Membre confirmé

    Profil pro
    Inscrit en
    Août 2008
    Messages
    1 191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 1 191
    Points : 595
    Points
    595
    Par défaut
    j'ai réussi a le faire avec ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    UPDATE 
    adresses, personnes
    SET 
    adresses.nom_rue='larue',personnes.prenom='leprelnom' 
    WHERE
    adresses.id_personne = personnes.id_personne AND personnes.id_personne = 2

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

Discussions similaires

  1. Comment faire un truncate/ insert conditionné
    Par Fiona08 dans le forum SQL
    Réponses: 7
    Dernier message: 18/05/2009, 20h51
  2. Comment faire une jointure sélective
    Par mobscene dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 26/12/2006, 07h44
  3. Réponses: 1
    Dernier message: 09/11/2006, 12h08
  4. [Débutant] père, mère, fils, comment faire les jointures ?
    Par santana2006 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 01/09/2006, 16h21
  5. Comment faire une jointure ?
    Par Terminator dans le forum Langage SQL
    Réponses: 12
    Dernier message: 16/10/2005, 13h26

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