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 d'une référence de type varchar vers type entier


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 18
    Points : 18
    Points
    18
    Par défaut Mise à jour d'une référence de type varchar vers type entier
    Bonjour,

    Je voudrais mettre à jour une table dont un champ contient des données de type varchar. Il s'agit du nom et du prénom des employés. Or, je voudrais qu'il fasse référence vers une table "agents" où seront stockés toutes les informations relatives aux employés. Je cherche donc une requête imbriquée qui me permettrait de mettre à jour les lignes de la 1ère table pour que le nom et le prénom soit remplacé par l'id des employés de la table "agents".


    Une idée ?

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    Quel est la structure des ces tables ? (limitée aux colonnes utiles à cette opération)
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre habitué
    Homme Profil pro
    Data Ingenieur
    Inscrit en
    Mai 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Data Ingenieur
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2006
    Messages : 133
    Points : 162
    Points
    162
    Par défaut
    Bonjour,

    En effet il nous faudrait la structure de tes tables cela serait plus simple.

    De plus ton champs contenant ton nom/prénom, comment sont stocké les données ? c'est une concaténation des 2 champs ou il y a un caractère spécial par exemple Jean-Blabla ou Simplement Jean Blabla.

    Si tu veux faire proprement il vaudrait mieux faire une nouvelle colonnes Employe_id par exemple type number.

    Pour ton update je pense que cela va être du type

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Update table_cible a set a.nom_prenom=(select a.id from table_source where b.nom=substr(a.nom_prenom...) and b.prenom=substr(a.nom_prenom...) )

  4. #4
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 18
    Points : 18
    Points
    18
    Par défaut
    Excusez pour la réponse tardive. J'avais laissé de côté ce problème jusqu'à aujourd'hui.

    Voici la structure des tables.

    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
    26
    27
    28
    29
    30
    Ancienne table HAQ_AGENTS
    {
    haqag_id NuméroAuto
    haqag_agent Texte => AGENTS(agent_nom)
    haqag_haq Texte => DICO_HABILITATIONS(haq_libelle)
    haqag_appli_geo Texte
    haqag_limitation Texte
    }
     
    Nouvelle table HAQ_AGENTS
    {
    haqag_id NuméroAuto
    haqag_agent Entier => AGENTS(agent_id)
    haqag_haq Entier => DICO_HABILITATIONS(haq_id)
    haqag_appli_geo  Entier
    haqag_limitation Entier
    }
     
    AGENTS
    {
    agent_id NuméroAuto
    agent_nom Texte
    ...
    }
     
    DICO_HABILITATIONS
    {
    haq_id NuméroAuto
    haq_libelle Texte
    }

    Dans le champ agent_nom, le nom et le prénom sont simplement concaténés sous cette forme (en respectant la casse) : NOM Prénom

    Dans l'ancienne table HAQ_AGENTS, les champs servant de relations sont de type Texte. Je voudrais qu'il soient de type Entier, ce qui donnerait la nouvelle table HAQ_AGENTS.
    Pour cela, j'ai besoin de formuler des requêtes imbriquées. Pouvez svp m'en donner une en exemple ? Puis également la procédure pour transférer les lignes de la 1ère table HAQ_AGENTS vers la seconde ?

  5. #5
    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 préconiserais un truc de ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ALTER TABLE HAQ_AGENTS
    ADD COLUMN haqag_id_agent INTEGER DEFAULT NULL;
     
    UPDATE HAQ_AGENTS ha
    INNER JOIN AGENTS a ON a.agent_nom = ha.haqag_agent
    SET ha.haqag_id_agent = a.agent_id;
    Ensuite tu changes la colonne en NOT NULL et tu en fais la clé étrangère à la place de l'autre puis tu supprimes la colonne haqag_agent.
    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 !

  6. #6
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 18
    Points : 18
    Points
    18
    Par défaut
    Merci infiniment. Ca va rassurer mon boss de savoir qu'il y ait plus à saisir des milliers de valeurs

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

Discussions similaires

  1. Mise à jour d'une table avec un fichier csv
    Par blackangel dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 26/05/2005, 14h46
  2. Mise à jour d'une bd mysql
    Par joquetino dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 11/01/2005, 14h05
  3. mise à jour d'une table d'interbase sous delphi
    Par kouraichi35 dans le forum Bases de données
    Réponses: 2
    Dernier message: 19/10/2004, 13h09
  4. [FireBird 1.5]Mise à jour d'une SGBD ?
    Par Sitting Bull dans le forum Débuter
    Réponses: 3
    Dernier message: 03/09/2004, 16h45
  5. Pb de mise à jour d'une date
    Par valerie90 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 02/09/2004, 14h11

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