Page 1 sur 1

mis à jour d'un champ de table

Posté : 17 mai 2007, 18:13
par martial
bonjour à tous

je posséde deux tables dans une base de données structurées comme suit:
  • T_1
    id_champ_t_1 (clé primaire)
    champ2 (mis à jour par le par le id_champ_t_2 de la table 2)
    champ3
    champ4

    T_2
    id_champ_t_2 (clé primaire)
    champ2
    champ3
avec la commande SQL suivante je met à jour ma table 1 (T_1)

Code : Tout sélectionner

UPDATE T_1 ,T_2 SET champ2=id_champ_t_2 where t_1.champ3=t_2.champ4
cela fonctionne trés bien et les informations de tables se lient comme il faut quand les contenus des champs sont parfaitement identiques. En revanche exist-il une possibilité de mettre à jour le champ2 de la table 1 quand seulement les derniers caractéres sont identiques
exemple:t_1champ3=ABCD1234
t_2champ4=1234
J'ai bien essayé le code suivant

Code : Tout sélectionner

UPDATE T_1 ,T_2 SET champ2=id_champ_t_1 WHERE t_1.champ3 LIKE t_2.%champ4
mais cela ne fonctionne pas!

Posté : 18 mai 2007, 01:00
par Sékiltoyai
Vois avec la fonction INSTR

Posté : 19 mai 2007, 17:05
par martial
J'ai trouvé la solution!

Code : Tout sélectionner

UPDATE T_1 ,T_2 SET champ2=id_champ_t_1 WHERE RIGHT (t_1.champ3, 4) = RIGHT( t_2.%champ4, 4)
Mysql met à jour les champs quand les quatres derniers caractéres sont identiques!

A bientôt

Posté : 19 mai 2007, 18:00
par Hubert Roksor
Je ne vais pas m'étendre sur le sujet car il a été abordé maintes fois, mais j'espère que tu es conscient que ton approche force MySQL à lire l'intégralité des deux tables et les vérouille en lecture et en écriture pendant toute l'opération. Donc j'espère que ce n'est pas une requête que tu exécutes souvent ou sur de grandes tables...

Posté : 21 mai 2007, 13:53
par martial
Si tu as une autre solution, je suis preneur!

Posté : 21 mai 2007, 14:17
par Hubert Roksor
Comme je le disais dans ton précédent sujet, crée une colonne qui sera identique dans les deux tables. C'est comme ça que les jointures doivent se faire, pas avec des trucs plus-ou-moins-équivalents-et-si-on-force-un-peu-ça-rentre.