Update d'un champ avec valeur sur une autre DB

Update d'un champ avec valeur sur une autre DB - SQL/NoSQL - Programmation

Marsh Posté le 18-04-2019 à 16:38:49    

Bonjour,
 
dans MYSQL 5.7
j'ai une table (import_it) avec une colonne city remplie et une autre colonne postcode vide.
J'ai une autre table (zip_it) avec une colonne 'postcode' et une autre 'city', remplies avec les données qui vont bien.
 
on m'a demandé d'updater le champ postcode de la table "import_it" avec les postcode de zip_it en matchant champs city correpsondant dans les 2 tables
 
Donc je dois updater  le champ postcode vide d'import_it grace au champ postcode de zip_it si le nom de la ville correspond
 
Sachant que les 2 tables ne sont pas dans la même DB, mais je peux changer ca si besoin
 
 
Voici ma requete (je me demande s'il ne faut pas 2 alias pour les tables différentes) qui affiche une errer (1064)
 
 

Code :
  1. UPDATE import_it
  2. SET import_it.zip=db2.zip_it.postcode
  3. FROM db1.import_it_cleaning_zip AS import_it
  4. WHERE import_it.city IN(SELECT city FROM db2.zip_it)
  5. LIMIT 100


 
Question subsidaire: comment utiliser un LIKE dans le where au cas où le nom serait un peu modifié ?
LIKE IN ?
 
 
Merci pour votre aide  :hello:


Message édité par tompouss le 18-04-2019 à 21:23:50

---------------
collectionneur de pâtes thermiques
Reply

Marsh Posté le 18-04-2019 à 16:38:49   

Reply

Marsh Posté le 18-04-2019 à 21:26:59    

UDPATE: je me suis résolu à faire ca en PHP et ca focntionne (encore heureux)
 
Mais ca m'interesserait de savoir si ca peut se faire en pur SQL également


Message édité par tompouss le 18-04-2019 à 21:27:15

---------------
collectionneur de pâtes thermiques
Reply

Marsh Posté le 19-04-2019 à 08:17:27    

avec MATCH AGAINST peut-être à la place du like ? Ou alors avec un regexp.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 19-04-2019 à 10:08:58    

Est-ce qu'une requete dans ce style pourrait fonctionner ?
 
 

Code :
  1. UPDATE import_it_cleaned_zip SET zip = (SELECT zip_it.postcode FROM zip_it WHERE zip_it.city = import_it_cleaned_zip.city)


 
Avec celle-ci phpmyadmin me met:
 
SELECT return more than 1 row, et du coup ca ne marche pas
 
precision: les 2 tables sont maintenant dans la même db


Message édité par tompouss le 19-04-2019 à 10:11:16

---------------
collectionneur de pâtes thermiques
Reply

Marsh Posté le 19-04-2019 à 10:43:03    

Et ça :
UPDATE import_it_cleaned_zip SET zip = zip_it.postcode WHERE zip_it.city = import_it_cleaned_zip.city


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 19-04-2019 à 11:32:49    

Je vais essayer ca merci :)


---------------
collectionneur de pâtes thermiques
Reply

Marsh Posté le 19-04-2019 à 15:45:00    

Ca marche pas,
il me met:
 
unknown column:
zip_it.city


---------------
collectionneur de pâtes thermiques
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed