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

Requêtes MySQL Discussion :

Mise à jour table depuis autre table


Sujet :

Requêtes MySQL

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Janvier 2007
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Mise à jour table depuis autre table
    Bonjour,

    Et d'abord bravo pour votre travail

    J'ai construit un site dans lequel j'avais fait les tables trop rapidement et je veux tout remettre d'équerre.

    J'ai une table livre et une table auteur.
    Avant la table livre avait le nom d'auteur rentré en dur
    La table auteur ne contenait que auteurs interviewés.

    Je veux remettre ca comme ca devrait et donc je voulais faire une requête qui reprend le numero de l'auteur dans la table auteur (je les ai tous importé) en les comparant au nom complet de ma table livres mais la commande ne passe pas.

    Quelqu'un pourrait m'aider ? (cela est dans le but de faire une table de jointure ensuite)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE book (ma table livre)
    SET book.idauteur = auteurs.numero 
    WHERE auteurs.auteur = book.auteur1
    Il m'indique que la table auteurs est inconnu dans la table.

    Je vous remercie de votre aide

  2. #2
    Expert confirmé
    Avatar de debug
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    1 034
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 034
    Points : 4 093
    Points
    4 093
    Par défaut
    Je dirais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE book, auteurs
    SET book.idauteur = auteurs.numero 
    WHERE auteurs.auteur = book.auteur1
    Il faut dans le UPDATE, les noms de toutes les tables utilisées

  3. #3
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 738
    Points
    11 738
    Par défaut
    C'est encore + beau avec une jointure normalisée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    UPDATE book 
      INNER JOIN auteurs ON auteurs.auteur = book.auteur1
    SET book.idauteur = auteurs.numero

  4. #4
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Janvier 2007
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Merci beaucoup de vos réponse
    Malheureusement aucun des deux ne fonctionne...

    UPDATE book,
    auteurs SET book.idauteur = auteurs.numero WHERE auteurs.auteur = book.auteur1
    renvoie : You have an error in your SQL syntax near ' auteurs SET book.idauteur = auteurs.numero WHERE auteurs.auteur = book.auteur1' at line 1

    UPDATE book INNER JOIN auteurs ON auteurs.auteur = book.auteur1 SET book.idauteur = auteurs.numero
    renvoie : You have an error in your SQL syntax near 'INNER JOIN auteurs ON auteurs.auteur = book.auteur1 SET book.idauteur = auteurs' at line 1

    Apparemment il ne prend as le UPDATE book,auteurs et le INNER JOIN... Dois-je donc faire une sous requête ?

    Merci encore de votre aide

  5. #5
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 738
    Points
    11 738
    Par défaut
    Je viens de tester les deux requêtes et toutes deux fonctionnent... quelle est ta version de MySQL ? quel est le code de création de tes deux tables ?

  6. #6
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Janvier 2007
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Argh, où je me trompe alors
    Pour info la table book est l'ancienne table dont je dois récupérer les données... Pour la nouvelle mouture, j'ai utilisé des tables de jointures
    # phpMyAdmin MySQL-Dump
    # version 2.4.0
    # http://www.phpmyadmin.net/ (download page)
    #
    # Serveur: localhost
    # Généré le : Jeudi 04 Janvier 2007 à 09:25
    # Version du serveur: 3.23.58
    # Version de PHP: 4.4.4
    # Base de données: `fantastinet`
    # --------------------------------------------------------

    #
    # Structure de la table `auteurs`
    #

    CREATE TABLE auteurs (
    numero int(11) NOT NULL auto_increment,
    prenom varchar(40) default NULL,
    nom varchar(40) default NULL,
    metier char(3) NOT NULL default 'A',
    nationalite varchar(30) default NULL,
    naissance year(4) default NULL,
    mort year(4) default NULL,
    biographie text,
    bibliographie text,
    chroniqueurs int(2) NOT NULL default '0',
    photo varchar(40) default NULL,
    site varchar(40) default NULL,
    recompense text,
    dedicace text,
    auteur text,
    maj timestamp(8) NOT NULL,
    editeur char(1) binary default NULL,
    PRIMARY KEY (numero)
    ) TYPE=MyISAM;
    # --------------------------------------------------------

    #
    # Structure de la table `book`
    #

    CREATE TABLE book (
    numero int(11) NOT NULL auto_increment,
    titre text NOT NULL,
    nationnalité text,
    auteur1 text,
    auteur2 text,
    idauteur int(11) default '0',
    idauteur2 int(11) default '0',
    idillu int(11) default NULL,
    idtradu int(11) default NULL,
    cycle char(1) default NULL,
    editionlue text,
    parutionlue text,
    collec text,
    editionprem text,
    anprem year(4) default NULL,
    auto char(1) binary default '0',
    pdf text,
    traduction text,
    couverture text,
    titreoriginal text,
    anoriginale varchar(4) default NULL,
    genre text,
    sousgenre text,
    enfants char(1) default NULL,
    age char(2) default NULL,
    nbpages varchar(4) default NULL,
    prix decimal(4,2) default '0.00',
    isbn varchar(13) default NULL,
    quatrième text,
    extrait text,
    resume text,
    volumes longtext,
    textavis text,
    aviscine text,
    chroniqueur text,
    photo text,
    url text,
    emballe char(1) default NULL,
    recompense text,
    commentaires text,
    cle text,
    question text,
    2aut char(1) binary default NULL,
    recherche text,
    temp text,
    maj timestamp(12) NOT NULL,
    PRIMARY KEY (numero),
    FULLTEXT KEY titre (titre,auteur1,auteur2,editionlue,collec,editionprem,traduction,couverture,titreoriginal,quatrième,resume,volumes,textavis,chroniqueur)
    ) TYPE=MyISAM;

  7. #7
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 738
    Points
    11 738
    Par défaut
    c'est un peu + compliqué puisque ta colonne book.auteur1 correspond à deux colonnes de auteurs, nom et prenom. Si ton book.auteur1 est écrit sous la forme "Emile Zola", cela devrait donner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE auteurs INNER JOIN book ON book.auteur1 = CONCAT(auteurs.prenom, ' ', auteurs.nom)   SET auteurs.numero =  book.idauteur

  8. #8
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Janvier 2007
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    En fait non, j'ai ajouté le champ auteur qui est une concatenation de prenom et nom (destiné à disparaitre à l'avenir)...

    Par contre, j'ai toujours le même message d'erreur, c'est peut-etre plus un problème de version de sql non ?

    Merci de votre aide

  9. #9
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 644
    Points
    4 644
    Par défaut
    extrait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Depuis MySQL version 4.0.4, 
    vous pouvez aussi faire des opérations de UPDATE 
    qui couvrent plusieurs tables :
    bon courage

  10. #10
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Janvier 2007
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Effectivement mon hébergeur doit nous monter de version donc on va dire que pour l'instant pas de solution
    Je vous remercie en tout cas de votre aide

Discussions similaires

  1. Réponses: 6
    Dernier message: 17/03/2015, 23h16
  2. Réponses: 2
    Dernier message: 10/06/2012, 21h41
  3. Mise à jour d'une nouvelle table par rapport à deux autres existantes
    Par drake56 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 20/07/2011, 17h13
  4. Réponses: 2
    Dernier message: 24/03/2009, 14h14
  5. Mise à jour d'une une table sql depuis table importée
    Par Yohann_x dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 09/03/2006, 11h43

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