IPB

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> SQL - Nouvelles Region INSEE
Options
_Panta
posté 14 Mar 2018, 13:45
Message #1


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 7 796
Inscrit : 24 Dec 2006
Lieu : "Over The Rainbow"
Membre no 76 401



Salut, j'aurais besoin d'un petit coup de mains.

Les régions françaises ont changé d'appelation en 2016 comme vous le savez.

Je bosse sur une banque d'images dont la base de données utilise encore les noms de régions pré-2015, on me demande de les passer sous la nouvelle nomenclature. J'ai plus de 150.000 photos anciennes dans cette base que j'ai pas codé moi même, et je ne veux/peux pas me planter.

J'ai donc recuper lers codes INSEE, et voila ce que j'ai fait pour integrer dans une nouvelles fonction. et ça marche;

Les nouvelles region
Code
<?php
$regionFr2016 = array();
$regionFr2016["84"] = "Auvergne-Rhône-Alpes";
$regionFr2016["27"] = "Bourgogne-Franche-Comté";
$regionFr2016["53"] = "Bretagne";
$regionFr2016["24"] = "Centre-Val de Loire";
$regionFr2016["94"] = "Corse";
$regionFr2016["44"] = "Grand Est";
$regionFr2016["32"] = "Haut-de-France";
$regionFr2016["11"] = "Île-de-France";
$regionFr2016["28"] = "Normandie";
$regionFr2016["75"] = "Nouvelle-Aquitaine";
$regionFr2016["76"] = "Occitanie";
$regionFr2016["52"] = "Pays-de-la-Loire";
$regionFr2016["93"] = "Provence-Alpes-Côte-d'Azur";
?>



Les anciennes régions
Code
<?php
$regionFr2015 = array();
$regionFr2015["42"] = "Alsace";
$regionFr2015["72"] = "Aquitaine";
$regionFr2015["83"] = "Auvergne";
$regionFr2015["25"] = "Basse-Normandie";
$regionFr2015["26"] = "Bourgogne";
$regionFr2015["53"] = "Bretagne";
$regionFr2015["24"] = "Centre";
$regionFr2015["21"] = "Champagne-Ardenne";
$regionFr2015["94"] = "Corse";
$regionFr2015["43"] = "Franche-Comté";
$regionFr2015["1"] = "Guadeloupe";
$regionFr2015["3"] = "Guyane";
$regionFr2015["23"] = "Haute-Normandie";
$regionFr2015["11"] = "Île-de-France";
$regionFr2015["4"] = "La Réunion";
$regionFr2015["91"] = "Languedoc-Roussillon";
$regionFr2015["74"] = "Limousin";
$regionFr2015["41"] = "Lorraine";
$regionFr2015["2"] = "Martinique";
$regionFr2015["6"] = "Mayotte";
$regionFr2015["73"] = "Midi-Pyrénées";
$regionFr2015["31"] = "Nord-Pas-de-Calais";
$regionFr2015["52"] = "Pays de la Loire";
$regionFr2015["22"] = "Picardie";
$regionFr2015["54"] = "Poitou-Charentes";
$regionFr2015["93"] = "Provence-Alpes-Côte d'Azur";
$regionFr2015["82"] = "Rhône-Alpes";
?>


La table d'équivalence Anciennes--> nouvelles
Code
<?php
$l = array();
$l["42"] = "44";
$l["72"] = "75";
$l["83"] = "84";
$l["25"] = "28";
$l["26"] = "27";
$l["53"] = "53";
$l["24"] = "24";
$l["21"] = "44";
$l["94"] = "94";
$l["43"] = "27";
$l["23"] = "28";
$l["11"] = "11";
$l["91"] = "76";
$l["74"] = "75";
$l["41"] = "44";
$l["73"] = "76";
$l["31"] = "32";
$l["52"] = "52";
$l["22"] = "32";
$l["54"] = "75";
$l["93"] = "93";
$l["82"] = "84";
?>


J'ai bien migrer les anciens vers les nouveau, pas de souci la dessus (et j'en ai fait de même avec les départements en leur appliquant leur nouveau code région )

Code
echo regionFr2015To2016("Alsace");
// Grand Est
echo regionFr2015To2016("Languedoc-Roussillon", false);
// 76.

echo regionFr2015To2016(26);
// Bourgogne-France Comté


Jusqu'à la tout va bien, les clients peuvent utiliser la nouvelle nomenclature

Maintenant, ce que je je cherche à faire , c'est de modifier le code région de ce qui a deja été entré, car certains sont les mêmes avec le même index dans la table region, mais d'autres ont des nouveau code INSEE et également un numero indexation dans la table differents.

Pour generer la sortie des requetes sur le site, ça passe par une table tb_documents lié à la table tb_regions qui contient la colonne insee_region.

Ma commande pour extraire toutes les photos de la region 83 est :

SELECT * FROM `tb_documents` WHERE `insee_region` = 83;

Elle me ressorts bien la liste des elements à modifier, mais qu'elle est la commande SQL qui me permet de changer tous les 83 de la colonne insee_region de cette table en 84 ?


Merci d'avance car mon SQL est un peu rouillé smile.gif

Ce message a été modifié par _Panta - 14 Mar 2018, 13:55.


--------------------
- Macbook Pro M1 Pro 16.2"
- Macbook Pro TouchBar 15.4" T1 - 512GB/core i7@2,7Ghz - A VENDRE - Clavier neuf et batterie neuve, changés début 2023 (Garanti 6 mois) - SSD Samsung nVme toujours à 2,5GB/s - Gris sidéral
- Macbook Air 13,3" core i5 - iMac 27" core i5 - iPhone14 - Apple Watch 8
- Fbx Delta Devialet
Go to the top of the page
 
+Quote Post
yponomeute
posté 14 Mar 2018, 13:56
Message #2


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 4 969
Inscrit : 26 Jan 2011
Lieu : Pollachius virens
Membre no 164 083



Pour mettre à jour de 83 vers 84
Code
UPDATE `tb_documents` SET `insee_region` = 84  WHERE `insee_region` = 83;


Tu peux aussi combiner avec un OR ou avec un IN si tu as plusieurs valeurs de départ pour une même valeur de fin

Code
UPDATE `tb_documents` SET `insee_region` = 44  WHERE `insee_region` = 42 OR `insee_region` = 41;


Code
UPDATE `tb_documents` SET `insee_region` = 44  WHERE `insee_region` IN (42,41);


Une méthode que j'utilise parfois dans une configuration de ce type c'est de rajouter un champ dans la table, insee_region_2 par exemple, de faire la mise à jour sur insee_region_2, de controler ensuite que tout est correct, et de copier finalement insee_region_2 vers insee_region, et pour finir on supprime le champ supplémentaire qu'on a rajouté


--------------------
MBP 2017 15" avec clavier pourri et touchbar inutile
Go to the top of the page
 
+Quote Post
_Panta
posté 14 Mar 2018, 14:01
Message #3


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 7 796
Inscrit : 24 Dec 2006
Lieu : "Over The Rainbow"
Membre no 76 401



UPDATE mais oui bien sur ! tongue.gif
Et merci pour le OR, car effectivement j'ai plusieurs régions qui sont dans ce cas, ça va simplifier grandement, et je vais suivre ton conseil d'un champ region#2 "bac-à-sable" pour voir si tous se passe bien d'abord.

Merci Yponomeute . tongue.gif

La Moderation peut editer en RESOLU, ça n'a pas trainer j'en étais certain smile.gif

Ce message a été modifié par _Panta - 14 Mar 2018, 14:08.


--------------------
- Macbook Pro M1 Pro 16.2"
- Macbook Pro TouchBar 15.4" T1 - 512GB/core i7@2,7Ghz - A VENDRE - Clavier neuf et batterie neuve, changés début 2023 (Garanti 6 mois) - SSD Samsung nVme toujours à 2,5GB/s - Gris sidéral
- Macbook Air 13,3" core i5 - iMac 27" core i5 - iPhone14 - Apple Watch 8
- Fbx Delta Devialet
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



Nous sommes le : 19th March 2024 - 12:48