|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Invité de passage
![]() Inscription : juin 2009 Messages : 7 ![]() |
Bonsoir la communauté,
Je souhaite afficher les doublons qui possèdent une partie de chaine de caractères identique dans un champ d'une même table. Par exemple, ma table 'table1' possède les champs: 'id', 'nom', 'cp'. Code :
Je pense à quelque chose qui pourrait ressembler à ceci: Code :
Merci de l'aide. ![]() Cordialement. |
||||
|
|
00
|
|
|
#2 |
![]() ![]() |
UPPER va mettre en lettres capitales le contenu de la colonne. Si tu veux trouver les deux 'PARIS 01', il ne faut pas travailler sur la totalité de la colonne nom mais seulement sur une partie. Si ça ne concerne que Paris et ses arrondissements, tu peux travailler sur les 8 premier caractères, LEFT(nom, 8), de la colonne. S'il y a d'autres villes mais que la colonne nom se termine toujours par le code postal qui en France est toujours de 5 caractères, il faut travailler sur la longueur de la colonne - 5 caractères LEFT(nom, LENGTH(nom) - 5).
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
|
|
#3 | ||
|
Invité de passage
![]() Inscription : juin 2009 Messages : 7 ![]() |
Merci de votre réponse.
En effet, il n'y a pas que Paris mais la colonne 'nom' se termine toujours par les 5 chiffres du code postal. J'arrive donc à afficher les caractères de la colonne 'nom' excepté le code postal grâce à: Je n'arrive cependant pas à l'intégrer dans le code qui permet d'afficher que les doublons. J'ai essayé quelque chose du genre: Code :
Merci Cordialement. |
||
|
|
00
|
|
|
#4 | ||
|
Membre Expert
![]() Inscription : juin 2007 Messages : 2 278 ![]() |
Bonjour,
c'est typiquement ici un problème de modélisation, les données ne sont pas assez atomisées mais trop agrégées dans une colonne nom ce qui pose ensuite ce genre de problème. Que donne la requête suivante ? Code sql :
__________________
Je ne réponds pas aux questions envoyées par mp |
||
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : juin 2009 Messages : 7 ![]() |
Bonsoir,
@Madfrix Dans une petite table votre requête fonctionne correctement. Maintenant dans ma table avec environ 330 000 entrées, il cherche et cherche... Sans résultat. Avez-vous une solution à cela? Cordialement. |
|
|
00
|
|
|
#6 | ||
|
Membre Expert
![]() Inscription : juin 2007 Messages : 2 278 ![]() |
C'est l'enchainement des fonctions de chaines qui font ramer.
Autre alternative probablement plus rapide : Code :
__________________
Je ne réponds pas aux questions envoyées par mp |
||
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Inscription : juin 2009 Messages : 7 ![]() |
Arf! Ca ne retourne toujours rien.. Je ne trouve toujours pas comment je pourrai afficher les doublons de ma grande table.
Est-il possible de rechercher pas toute la table d'un coup? Partie par partie? DU genre 'id'=1 à id='500' ? Merci. Cordialement. |
|
|
00
|
|
|
#8 | ||||||||
![]() ![]() |
330 000 lignes, ce n'est pas une grande table !
Le problème est que les index ne peuvent pas être utilisés à cause de la fonction sur la chaîne de caractère. Essaie avec une table temporaire : Code :
Une fois qu'on a cette table temporaire indexée, on peut travailler plus efficacement avec en étant débarrassé des fonctions de chaînes de caractères. Quels sont les doublons dans la table temporaire ? Code :
Code :
Code :
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
||||||||
|
00
|
|
|
#9 |
|
Invité de passage
![]() Inscription : juin 2009 Messages : 7 ![]() |
La colonne 'id' n'a en effet que des valeurs uniques (Auto Incrémenté).
J'ai tester l'enchainement des requêtes. J'ai testé des variantes également. La table temporaire se créée correctement mais l'erreur suivante apparait: "#1137 - Can't reopen table: 't1'" Merci de l'aide. Cordialement. |
|
|
00
|
|
|
#10 |
![]() ![]() |
Quand je dis "enchaînement de requêtes", ça veut dire qu'il fautr les lancer dans la même connexion.
Dans phpMyAdmin, tu lances le paquet de requêtes d'un coup. En PHP, tu ouvre une connexion à la BDD, tu lance les requêtes l'une derrière l'autre puis tu fermes la connexion.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
|
|
#11 | ||
|
Invité de passage
![]() Inscription : juin 2009 Messages : 7 ![]() |
Je travaille directement dans phpMyAdmin et j'avais bien lancer ceci d'un coup:
Code :
|
||
|
|
00
|
|
|
#12 | ||
![]() ![]() |
Un coup de
avec le message d'erreur m'a conduit sur un message qui explique qu'on ne peut utiliser deux fois une table temporaire dans la même requête.Crée une vraie table puis supprime là quand tu n'en as plus besoin : Code :
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
||
|
00
|
|
|
#13 | ||
|
Invité de passage
![]() Inscription : juin 2009 Messages : 7 ![]() |
En effet. Bien vu CinePhil.
Ceci étant il continuait de m'afficher une erreur: "#1052: Column 'debut_nom' in field list is ambiguous" Après une nouvelle recherche, j'ai trouvé la réponse, ce qui donne au final: Code :
Merci beaucoup. |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com