Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 28/12/2012 13:19:20
- youssef
- Membre
Like d'une valeur dynamique
Bonjour
svp, est ce qu'il y a une syntaxe qui permet d'utiliser la clause like avec le résultat d'une requête.
un peu comme (exemple) :
where
adresse like '% (select ville from villes where dep ='75' ) %'
pour savoir si il y a des adresses appartenant à des villes du 75
je sais pas si l'exemple est parlant ou pas, c'est le premier que mes cellule grises m'ont envoyé
Merci à vous
Hors ligne
#2 28/12/2012 13:35:19
- kenrio
- Membre
Re : Like d'une valeur dynamique
je pars déjeuné donc j'ai pas la réponse mais si ça fonctionne et j'en doute niveau performance ça doit être proche du zéro ^^
Hors ligne
#3 28/12/2012 14:16:11
- gleu
- Administrateur
Re : Like d'une valeur dynamique
Montrez la requête entière si vous voulez qu'on puisse vous aider....
Guillaume.
Hors ligne
#4 31/12/2012 11:39:42
- youssef
- Membre
Re : Like d'une valeur dynamique
Pour ce cas j'ai pas vraiment de requête mais juste un exemple,
imaginons deux tables avec un champ adresse qu'on nommé Table_adrs , et une 2eme table avec les villes et leur code département, qu'on va appeler table_ville
l'objectif et d'avoir les lignes de table_adrs qui appartienne à des villes d'un département donné
-- liste des villes d'un département
select ville from table_ville where dep='75'
-- liste des adresses d'une ville par exemple 'PARIS'
select * from table_adrs where adresse like '%PARIS%'
la question est :
y a t il une (option/fonction/syntaxe) qui va permettre de combiner ces 2 requêtes en une seule
et permettre de passer le résultats de la première dans le motif de like.
j'espère que c'est mieux claire maintenant
Merci
Dernière modification par youssef (31/12/2012 11:46:02)
Hors ligne
#5 31/12/2012 12:01:46
- MitsuTomoe
- Membre
Re : Like d'une valeur dynamique
Bonjour,
si je comprend bien votre colonne Table_adrs contient l'adresse sous forme non structurée, par exemple "10 rue des Alouettes 75006 PARIS" ?
Dans ce cas, vous ne pourrez jamais faire de recherche exacte. Comment distinguer "12 rue de Paris 11100 NARBONNE" de "1 rue de la Paix 75009 PARIS" ?
Si la saisie a été standardisée, vous pouvez essayer de transformer votre champ Table_adrs en une structure adresse correcte :
complément adresse, numéro voie, type voie, nom_voie, distrib speciale, lieudit, code postal, cedex, numéro insee commune.
Une petite procédure pourrait traiter 99% des cas, une revue et correction manuelle s'imposant pour le reste.
Ai-je tout compris ou votre exemple n'était-il pas réel ?
Hors ligne
#6 31/12/2012 12:32:30
- rjuju
- Administrateur
Re : Like d'une valeur dynamique
Bonjour,
comme le dit MitsuTomoe, il est en effet préférable d'avoir une meilleur structure pour stocker l'adresse. Une adresse est normalisée par la poste (32 caractères par ligne, tout en majuscule...), surtout pour l'envoi en masses par les entreprises.
En l'état, pour votre requête, il faudrait faire quelque chose du genre:
SELECT * FROM table_adrs
JOIN table_ville ON tableville.dep=75 AND table_adrs LIKE '%' || tableville.ville || '%'
mais les problèmes de nom de rue donnés par MitsuTomoe seront présent, avec en plus des performances désastreuses.
Julien.
https://rjuju.github.io/
Hors ligne
#7 31/12/2012 17:33:33
- youssef
- Membre
Re : Like d'une valeur dynamique
Merci pour vos retours,
@MitsuTomoe vous avez tout compris, et l'exemple est réel
@rjuju merci pour l'exemple de requête ,
LIKE '%' || tableville.ville || '%'
Hors ligne
Pages : 1