Requete SQL sur les doublons ?trop compliqué!!!
6 messages
• Page 1 sur 1
- bigs32
- WRInaute impliqué

- Messages: 517
- Inscription: 8 Mai 2006
Requete SQL sur les doublons ?trop compliqué!!!
bonjour
dans ma base SQL , chaque enregistrement a un titre écrit en deux fois sur le meme champ
exemple :AC Digne les Bains en 2 fois ect..
voici d'autres exemples
ActivaSport ActivaSport
AC Digne les Bains AC Digne les Bains
A.S.Caluire Athlétisme A.S.Caluire Athlétisme
Annuaire Coaching Annuaire Coaching
Athlé St-Julien 74 Athlé St-Julien 74
j'aimerais en enlever le deuxième titre pour n'en garder qu'un
mais je n'arrive pas à trouver une requete SQL ou PHP pour faire cà.
J'ai essayé avec explode avec comme séparateur \t mais la règle ne marche pas pour tout
AVEZ VOUS UNE IDEE A ME PROPOSER
MERCI D AVANCE AUX PRO DU SQL
dans ma base SQL , chaque enregistrement a un titre écrit en deux fois sur le meme champ
exemple :AC Digne les Bains en 2 fois ect..
voici d'autres exemples
ActivaSport ActivaSport
AC Digne les Bains AC Digne les Bains
A.S.Caluire Athlétisme A.S.Caluire Athlétisme
Annuaire Coaching Annuaire Coaching
Athlé St-Julien 74 Athlé St-Julien 74
j'aimerais en enlever le deuxième titre pour n'en garder qu'un
mais je n'arrive pas à trouver une requete SQL ou PHP pour faire cà.
J'ai essayé avec explode avec comme séparateur \t mais la règle ne marche pas pour tout
AVEZ VOUS UNE IDEE A ME PROPOSER
MERCI D AVANCE AUX PRO DU SQL
-

ortolojf - WRInaute passionné

- Messages: 1676
- Inscription: 14 Aoû 2002
Bonjour
Pour faire une reconnaissance automatique d'expression régulière dans un script PHP, il faudrait que tu ais sur une table différente, les noms des titres que tu cherches à isoler.
Sinon, je ne vois pas coment un algorithme automatique pourrait résoudre le problème.
Ou bien éventuellement, tu pourrais transférer ta table SQL sur ton ordinateur en local, et faire le traitement de manière manuelle, avec le client mysql.
Une chose est sûre: S'il n'y a pas de moyen de faire une reconnaissance automatique d'expressions régulières, adieu l'automaticité, bonjour le processus manuel.
Eventuellement, si tu as toujours la source des données, tu pourrais refaire la table ( une autre table ), en ne sélectionnant qu'un titre à chaque fois, puis en faisant à chaque sélection, une recherche dans la première table par expression régulière, puis en affectant les autres champs de la ligne lue dans la première table.
Bien à toi.
Amicalement.
Jean-François Ortolo
Pour faire une reconnaissance automatique d'expression régulière dans un script PHP, il faudrait que tu ais sur une table différente, les noms des titres que tu cherches à isoler.
Sinon, je ne vois pas coment un algorithme automatique pourrait résoudre le problème.
Ou bien éventuellement, tu pourrais transférer ta table SQL sur ton ordinateur en local, et faire le traitement de manière manuelle, avec le client mysql.
Une chose est sûre: S'il n'y a pas de moyen de faire une reconnaissance automatique d'expressions régulières, adieu l'automaticité, bonjour le processus manuel.
Eventuellement, si tu as toujours la source des données, tu pourrais refaire la table ( une autre table ), en ne sélectionnant qu'un titre à chaque fois, puis en faisant à chaque sélection, une recherche dans la première table par expression régulière, puis en affectant les autres champs de la ligne lue dans la première table.
Bien à toi.
Amicalement.
Jean-François Ortolo
-

lupuz - WRInaute discret

- Messages: 213
- Inscription: 15 Mar 2006
En SQL, ca me compliqué a faire.
Par contre, tu dois pouvoir facilement écrire un petit script comptant le nombre de mots dans le champ avant de remettre à jour l'enregistrement.
ex :
<?
$arrayMots = explode($contenuDeTonChamps);
for($num=0; $num <= (count($arrayMots )/2), $num++)
$nouveauContenu .= $arrayMots[$num];
?>
Par contre, tu dois pouvoir facilement écrire un petit script comptant le nombre de mots dans le champ avant de remettre à jour l'enregistrement.
ex :
<?
$arrayMots = explode($contenuDeTonChamps);
for($num=0; $num <= (count($arrayMots )/2), $num++)
$nouveauContenu .= $arrayMots[$num];
?>
-

Marie-Aude - Modérateur

- Messages: 11900
- Inscription: 5 Juin 2006
L'idée serait de trouver le premier espace, et d'isoler la chaine jusqu'au premier espace.
Ensuite de rechercher cette chaine "plus loin" dans le champs, et de voir sa position.
Puis de supprimer tout ce qui vient après.
En syntaxe excel, ça donne
GAUCHE(A1;CHERCHE(GAUCHE(A1;CHERCHE(" ";A1;1)-1);A1;CHERCHE(" ";A1;1))-2)
en imaginant que le texte est dans la cellule A1 (je l'ai fait en vitesse sous excel pour vérifier que ça marche)
En moins dense :
Le texte est en A1
En B1 on détermine la position du premier espace :
CHERCHE(" ";A1;1)
En C1 on extrait la chaine du premier caractère jusqu'à avant le premier espace :
GAUCHE(A1;B1-1)
En D1 on trouve la deuxième occurrence de la chaine extraite : CHERCHE(C1;A1;B1)
En résultat on prend à gauche de la position de cette deuxième occurrence :
GAUCHE(A1;D1-2)
Je te laisse transformer avec les fonctions php
Ensuite de rechercher cette chaine "plus loin" dans le champs, et de voir sa position.
Puis de supprimer tout ce qui vient après.
En syntaxe excel, ça donne
GAUCHE(A1;CHERCHE(GAUCHE(A1;CHERCHE(" ";A1;1)-1);A1;CHERCHE(" ";A1;1))-2)
en imaginant que le texte est dans la cellule A1 (je l'ai fait en vitesse sous excel pour vérifier que ça marche)
En moins dense :
Le texte est en A1
En B1 on détermine la position du premier espace :
CHERCHE(" ";A1;1)
En C1 on extrait la chaine du premier caractère jusqu'à avant le premier espace :
GAUCHE(A1;B1-1)
En D1 on trouve la deuxième occurrence de la chaine extraite : CHERCHE(C1;A1;B1)
En résultat on prend à gauche de la position de cette deuxième occurrence :
GAUCHE(A1;D1-2)
Je te laisse transformer avec les fonctions php
-

julienr - WRInaute impliqué

- Messages: 913
- Inscription: 5 Aoû 2003
si la règle est bien respecté normalement ton champs fait 2 fois la taille + 1 (espace)
fais une sauvegarde avant quand même
- Code: Tout sélectionner
update `table` set `champ` = substr( `champ`, 1, strlen( `champ` ) / 2 );
fais une sauvegarde avant quand même
6 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- Google API : guide de développement de l'API Google - 20-09-2002
- AdSense Tracking : statistiques détaillées sur les clics AdSense - 29-02-2004
- Nombre moyen de mots par requête : statistiques AOL Août 2006 - 10-08-2006
- Nombre de clics dans les pages de résultats : statistiques AOL Août 2006 - 11-08-2006
- Informations sur l'infrastructure technique de Google - 01-11-2004
- Google indexe le Flash - 28-04-2004
- + de résultats pour un même site sur Google - 23-08-2010
- Yagoort : Yet Another Google Rank Test - 24-03-2005
Consultez la description détaillée des produits ou services de Google suivants : Google Images
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités
