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 INNER JOIN ?


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2010
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Update et INNER JOIN ?
    Bonjour à tous,

    Je me permets de venir demande un peu d'aide pour une requête SQL que je n'arrive pas à faire. Auriez-vous la sympathie de me mettre sur la bonne route ?

    Voici mon cas :

    Table utilisateurs_1 composée d'un champ user_id, user_clean et user_type
    Table utilisateurs_2 composée d'un champ user_id, user_clean et user_type

    Jusque là c logique, non ?

    Besoin :
    Mettre à jour les user_id de la table utilisateurs 1 en reprenant celui de la table utilsateurs_2 pour les enregistrements ayant le même user_clean et dont les users_type sont différents de 2.

    1er test = Utilisation d'un select et ca fonctionne. En retour j'ai bien les enregistrements concernés.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT *
    FROM utilisateurs_1 p
    INNER JOIN utilsateurs_2 e
      ON e.user_clean = p.user_clean
      WHERE e.user_type != 2;
    Mais je sèche totalement pour mettre tout ca à jour

    Pourriez-vous m'apporter votre aide ?!

    Merci !

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 388
    Points
    18 388
    Par défaut
    La syntaxe peut varier d'un SGBD à un autre.
    Celle-ci néanmoins devrait fonctionner sur tous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    update utilisateurs_1 p
      set p.user_id = (select e.user_id
                         from utilsateurs_2 e
                        where e.user_clean = p.user_clean
                          and e.user_type <> 2)
     where exists (select null
                     from utilsateurs_2 e
                    where e.user_clean = p.user_clean
                      and e.user_type <> 2);

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2010
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Merci ! Je teste cela dés ce soir.

    La seule chose qui me fait un peu peur, c'est que ces user_id devront être modifiés dans d'autres tables.

    Je pense que faire un seul update sera bcp trop lourd d'un point de vue ressources.

    Je me demandais donc si il n'était pas plus simple, que j'utilise mon select et que je le sorte en XML afin d'avoir un fichier "traitable".

    Ensuite faire les conversions entre les anciens user_id et lse nouveaux via l'UPDATE proposé par Waldar !

    Ou éventuellement ajouter une colonne user_id2 dans la table_1... J'suis perdu

    Une idée de travail ?

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 388
    Points
    18 388
    Par défaut
    Je n'ai pas bien compris ce que vous voulez faire, mais j'ai compris que c'est mal modélisé.

    Si vos user_id sont des clefs primaires, vous ne devriez pas avoir à les mettre à jour.

    Je vous invite à parcourir les cours & tutoriaux de ce forum afin de comprendre le pourquoi du comment.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2010
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Merci pour l'aide, ca fonctionne très bien !

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

Discussions similaires

  1. Problème avec UPDATE et INNER JOIN
    Par korbn dans le forum Requêtes
    Réponses: 2
    Dernier message: 25/05/2009, 20h52
  2. [MySQL] UPDATE et INNER JOIN
    Par korbn dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 25/05/2009, 14h27
  3. probleme update et inner join
    Par makaphrodite dans le forum Bases de données
    Réponses: 3
    Dernier message: 13/04/2009, 11h44
  4. UPDATE et INNER JOIN
    Par korbn dans le forum Requêtes
    Réponses: 4
    Dernier message: 22/11/2008, 04h28
  5. UPDATE avec INNER JOIN
    Par steelidol dans le forum MS SQL Server
    Réponses: 11
    Dernier message: 03/03/2006, 23h56

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