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 :

Requète pour syncrhoniser 2 tables


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 12
    Par défaut Requète pour syncrhoniser 2 tables
    Bonjour,

    J'ai 2 tables :
    address_book qui contient les variables : customer_id et address_book_id
    et customers qui contient les variables : customer_id et customer_default_address_id

    Je souhaite mettre à jour la variable customer_default_address_id avec la première variable trouvée address_book_id (il peut y avoir plusieurs address_book_id pour 1 seul customer_id)

    Début de requète SQL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    UPDATE customers
    SET 'customer_default_address_id' = 'address_book_id'
    //mais bon quoi ajouter pour permettre de faire la correspondance entre les 2 variables customer_id ?
    Quelqu'un aurait-il une idée ?
    C'est sûrement une question basique, mais bon je n'y arrive pas

    Cordialement

  2. #2
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Par défaut
    Bonjour,

    Pour tout savoir ou presque sur l'utilisation du UPDATE, un petit article de SQLpro

    « Je ne cherche pas à connaître les réponses, je cherche à comprendre les questions. »
    - Confucius -

    Les meilleurs cours, tutoriels et Docs sur les SGBD et le SQL
    Tous les cours Office
    Solutions d'Entreprise



  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 12
    Par défaut
    Citation Envoyé par jeanflo037 Voir le message
    Bonjour,

    J'ai 2 tables :
    address_book qui contient les variables : customers_id et address_book_id
    et customers qui contient les variables : customers_id et customer_default_address_id

    Je souhaite mettre à jour la variable customer_default_address_id avec la première variable trouvée address_book_id (il peut y avoir plusieurs address_book_id pour 1 seul customer_id)
    Merci Chtulus
    J'essaye :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    UPDATE customers
    SET 'customer_default_address_id' = 'address_book_id' 
    WHERE  'customers_id' = (SELECT  'customers_id'
                     FROM   'customers'
                        JOIN 'address_book' 
                             ON 'customers_id' = 'customers_id')
    Est-ce que cela vous semble être la solution ?

  4. #4
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Par défaut
    Heu dans le FROM de ton SELECT, il faudrait mettre des ALIAS aux tables et les utilisés dans le SELECT et le ON car on ne sait pas à quelle table appartiennent tes colonnes 'customer_id' !

    Ensuite tu n'auras plus qu'à tester

    [Edit]
    Comme indiqué ici

    « Je ne cherche pas à connaître les réponses, je cherche à comprendre les questions. »
    - Confucius -

    Les meilleurs cours, tutoriels et Docs sur les SGBD et le SQL
    Tous les cours Office
    Solutions d'Entreprise



  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 12
    Par défaut
    Citation Envoyé par Chtulus Voir le message
    Heu dans le FROM de ton SELECT, il faudrait mettre des ALIAS aux tables et les utilisés dans le SELECT et le ON car on ne sait pas à quelle table appartiennent tes colonnes 'customer_id' !
    Merci
    OK, je n'avais pas compris le système des alias. Cela pourrait donner quelque chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    UPDATE customers
    SET 'customer_default_address_id' = 'address_book_id' 
    WHERE  'customers_id' = (SELECT  'customers_id'
                     FROM   'customers' C
                        JOIN 'address_book' A
                             ON 'A.customers_id' = 'C.customers_id')
    AU fait faut-il entourer les nom des variable et nom de table par ' ' ?

  6. #6
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Par défaut
    Quel SGBDR ?
    « Je ne cherche pas à connaître les réponses, je cherche à comprendre les questions. »
    - Confucius -

    Les meilleurs cours, tutoriels et Docs sur les SGBD et le SQL
    Tous les cours Office
    Solutions d'Entreprise



  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 12
    Par défaut
    MySql sur un LAMP

    MySQL - 5.0.45
    PhPMyadmin 2.8.2.4

  8. #8
    Membre émérite
    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
    Par défaut
    Citation Envoyé par jeanflo037 Voir le message
    AU fait faut-il entourer les nom des variable et nom de table par ' ' ?
    Pour MySQL je crois que c'est plutôt par ce caractère : ` (alt gr + 7).
    Mais selon le nom de tes objet, ce n'est pas obligatoire.

  9. #9
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 954
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 954
    Par défaut
    Salut,

    Ta requète pourrait s'écrire (bien sûr si customers_id est unique dans la table address_book):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE customers c
    SET c.customer_default_address_id = (select max(a.address_book_id) from address_book a where a.customers_id=c.customers_id) 
    where exists (select 1 from address_book a where a.customers_id=c.customers_id)
    mais MySQL a une syntaxe un peu particulière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    update customers c
    JOIN address_book a on c.customers_id = a.customers_id
    set c.customer_default_address_id = a.address_book_id
    [EDIT] :J'avais pas qu'il y avait plusieurs cust_id dans address_book =>
    requete 1 : ajout de max ou LIMIT 1
    requete 2 je pense que c'est ce que MySQL va faire naturellement, je suis pas sûr mais je le vois bien faire comme avec le GROUP BY

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 07/01/2012, 12h43
  2. [HQL] Requête pour comparer 2 tables
    Par A.BenAmmar dans le forum Hibernate
    Réponses: 9
    Dernier message: 16/09/2011, 09h12
  3. Requête pour "sérialiser" une table de comptage
    Par aztazt dans le forum Langage SQL
    Réponses: 2
    Dernier message: 05/10/2009, 11h07
  4. [AC-2003] Requête pour remplir une table à partir d'un fichier Excel
    Par olivier777 dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 07/09/2009, 10h52
  5. Réponses: 4
    Dernier message: 05/10/2008, 02h41

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