Requetes SQL Ville, Departement, CP

Demande de requêtes/listes personnalisées, questions sur le plugin B.O.A. ou le Générateur de requêtes intégré : tout ce qui touche au SQL se trouvera ici.

Requetes SQL Ville, Departement, CP

Messagede lasmarco » 03 Jan 2012, 10:35

Bonjour,

Voilà je suis nouveau sur le forum, et avant tout de chose je vous souhaite pleins de bonnes choses pour cette nouvelle année.

Je viens vers vous car n'ayant pas trop de connaissance sur SQL et sur BOA, je souhaiterais avoir la requête SQL qui me permettrais d'ajouter le département en fonction de la ville et/ou du code postal.

Car je me suis aperçu que la plupart des départements n'étaient pas enregistrés.

Merci d'avance,
lasmarco
Copiste Novice
Copiste Novice
 
Messages: 7
Inscription: 03 Jan 2012

Re: Requetes SQL Ville, Departement, CP

Messagede DDdeberdeux » 04 Jan 2012, 12:31

Bonjour,

La solution la plus simple si vous n'avez pas trop de lieux favoris est encore d'utiliser la fonction "Modifier ce lieu favori" qui a l'avantage de mettre à jour tous les champs du lieu.
Sinon, vous pouvez utiliser la requête suivante pour mettre à jour tous les départements français:
Code: Tout sélectionner
update evenements_ind e
set e.ev_ind_dept=
(select first(1) r.rdp_libelle
from ref_departements r
where r.rdp_code_deux=substring(e.ev_ind_insee from 1 for 2))
where char_length(e.ev_ind_dept)=0
and e.ev_ind_pays='FRANCE'
and e.ev_ind_kle_dossier=4

dans cet exemple limité au dossier 4.
A recommencer en changeant _ind_ en _fam_ pour l'appliquer aux événements familiaux.
Pour les autres pays, c'est plus délicat car il faut connaitre la structure des codes INSEE ou équivalent, ou se baser uniquement sur le nom de la ville.

André
Quatrième Loi de Gilb de la Non-Fiabilité.
Un système tendra à grossir dans le sens de la complexité plutôt que de la simplification, jusqu’à ce que l’instabilité résultante devienne intolérable.
Avatar de l’utilisateur
DDdeberdeux
Maître des Requêtes
Maître des Requêtes
 
Messages: 77
Inscription: 17 Déc 2008
Localisation: Berdeux, MORBIHAN

Re: Requetes SQL Ville, Departement, CP

Messagede lasmarco » 04 Jan 2012, 13:46

Merci André pour votre réponse !

En fait j'ai réussi à me dépatouiller avec ces deux requêtes:
1/ Elle concerne la mise à jour des champs Départements pour les naissances et décès - en remplaçant chaque CP par le département associé
Code: Tout sélectionner
UPDATE EVENEMENTS_IND
SET EV_IND_DEPT = 'Cher'
WHERE EV_IND_CP LIKE '18%'


2/ Elle concerne la mise à jour des champs Départements pour les mariages - en remplaçant chaque CP par le département associé
Code: Tout sélectionner
UPDATE EVENEMENTS_FAM
SET EV_FAM_DEPT = 'Cher'
WHERE EV_FAM_CP LIKE '18%'


Marc
lasmarco
Copiste Novice
Copiste Novice
 
Messages: 7
Inscription: 03 Jan 2012

Re: Requetes SQL Ville, Departement, CP

Messagede DDdeberdeux » 04 Jan 2012, 15:13

Vos requêtes fonctionnent évidemment, mais elles ont plusieurs inconvénients:
-elles doivent être répétées autant de fois qu'il y a de départements dans votre généalogie,
-elles ne garantissent pas que vous utilisez pour le nom du département la même orthographe que dans la table de référence,
-se baser sur le CP, c'est oublier que certaines communes sont rattachées à un bureau de poste du département limitrophe,
-elles "écrasent" une information existante, pouvant la remplacer par une erronée dans le cas ci-dessus,
-si votre base comprend plusieurs dossiers, tous sont modifiés même si un seul est concerné.

André
Quatrième Loi de Gilb de la Non-Fiabilité.
Un système tendra à grossir dans le sens de la complexité plutôt que de la simplification, jusqu’à ce que l’instabilité résultante devienne intolérable.
Avatar de l’utilisateur
DDdeberdeux
Maître des Requêtes
Maître des Requêtes
 
Messages: 77
Inscription: 17 Déc 2008
Localisation: Berdeux, MORBIHAN

Re: Requetes SQL Ville, Departement, CP

Messagede lasmarco » 06 Jan 2012, 07:40

Bonjour André,

Effectivement, je suis d'accord avec vous, même si dans mon cas je n'ai qu'un seul dossier.

Par contre, j'ai essayé votre requête et malheureusement, elle bloque sur le "select". J'ai bien sur pris la précaution de remplacer le dossier 4 par mon numéro de dossier.

Marc
lasmarco
Copiste Novice
Copiste Novice
 
Messages: 7
Inscription: 03 Jan 2012

Re: Requetes SQL Ville, Departement, CP

Messagede DDdeberdeux » 06 Jan 2012, 09:43

Bonjour,

Effectivement il y a un problème, mais pas dans le select. La fonction char_length(x) retourne bien 0 si x est une chaîne vide, mais pas si x est null.
Dans la requête, remplacez char_length(e.ev_ind_dept)=0 par
(trim(e.ev_ind_dept)='' or e.ev_ind_dept is null)
trim(e.ev_ind_dept)='' permet de retrouver les enregistrements où le département est une chaîne vide ou constituée uniquement d'espaces.

André
Quatrième Loi de Gilb de la Non-Fiabilité.
Un système tendra à grossir dans le sens de la complexité plutôt que de la simplification, jusqu’à ce que l’instabilité résultante devienne intolérable.
Avatar de l’utilisateur
DDdeberdeux
Maître des Requêtes
Maître des Requêtes
 
Messages: 77
Inscription: 17 Déc 2008
Localisation: Berdeux, MORBIHAN

Re: Requetes SQL Ville, Departement, CP

Messagede lasmarco » 06 Jan 2012, 15:23

André,

Me voilà confronté encore avec le même message d'erreur!

Voilà la requête complète modifié par le code que tu m'as gentiment donné
Code: Tout sélectionner
update evenements_ind e
set e.ev_ind_dept=
(select first(1) r.rdp_libelle
from ref_departements r
where r.rdp_code_deux=substring(e.ev_ind_insee from 1 for 2))
where (trim(e.ev_ind_dept)='' or e.ev_ind_dept is null)
and e.ev_ind_pays='FRANCE'
and e.ev_ind_kle_dossier=1


Marc
lasmarco
Copiste Novice
Copiste Novice
 
Messages: 7
Inscription: 03 Jan 2012

Re: Requetes SQL Ville, Departement, CP

Messagede DDdeberdeux » 06 Jan 2012, 16:51

La requête me semble correcte et chez moi elle fonctionne sans problème. Il est vrai que je n'utilise pas le BOA mais IBExpert avec la version serveur de Firebird.
Quel est le texte du message d'erreur dont vous parlez?
Avec le BOA, il ne faut pas cliquer sur le bouton "Exécuter requête" mais sur "Exécuter procédure" pour toutes les requêtes de types INSERT UPDATE qui ne retournent pas d'enregistrement.
"Exécuter requête" n'est à utiliser qu'avec des requêtes SELECT qui attendent des enregistrement en retour. C'est sans doute l'origine du message dont vous parlez.

André
Quatrième Loi de Gilb de la Non-Fiabilité.
Un système tendra à grossir dans le sens de la complexité plutôt que de la simplification, jusqu’à ce que l’instabilité résultante devienne intolérable.
Avatar de l’utilisateur
DDdeberdeux
Maître des Requêtes
Maître des Requêtes
 
Messages: 77
Inscription: 17 Déc 2008
Localisation: Berdeux, MORBIHAN

Re: Requetes SQL Ville, Departement, CP

Messagede lasmarco » 06 Jan 2012, 18:58

Grâce à votre aide, j'ai enfin réussi à exécuter cette requête sans problème.

Un grand merci à vous!

Marc
lasmarco
Copiste Novice
Copiste Novice
 
Messages: 7
Inscription: 03 Jan 2012


Retourner vers Le Coin du SQL

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun et 9 invités

cron