salut,
ce que tu veux faire est à proscrire et va à l'encontre de la 1ère forme forme normale d'une base de donnée :
atomicité d'une valeur
d'ailleurs a partir du moment où tu as le département tu n'as pas besoin besoin d'avoir la région vu que tu peux facilement la retrouver avec une requête (jointure par exemple, c'est d'ailleurs ce que tente ton 1ère select).
Par exemple imaginons que tu ais des "gens" qui habite dans un département et donc dans une région.
cela ce modélise simplement ainsi :
table régions
- idregion clef primaire
- nomregion varchar
table département
- iddepartement clef primaire
- nomdepartement varchar
table gens
- idgens clef primaire
- iddepartement clef étrangère de la table départment
- nomgens
pour avoir les noms de la région et du département :
select idgens, nomgens, nomdepartement, nomregion
from gens
join département using(iddepartement)
join région using(idregion)
tu veux les info que pour un gens ? => ajoute un where idgens = xxx
pourquoi faire cela (en dehors de te dire, c'est comme ça que l'on fait bien) ?
imagine que tu te soit trompé dan le nom d'une région (par exemple tu as mis ein au lien de ain).
tu va faire :
- un update du la table région
- une update sur la table gens (potentiellement des centaines de millions de ligne ?)
avec un système comme celui que je t'indique : 1 seule update le premier, c'est simple et rapide.
de plus tu gagne sur la taille de stockage des données (ce qui n'est pas forcément négligeable si tu as une base importante, même le prix du Go n'est plus forcément un obstacle

).
@+