J'ai utilisé un module Drupal appelé FeedAPI De-Dupe pour supprimer les enregistrements en double de la base de données (MySQL) de mon site. Le module fait un excellent travail, mais il me reste encore quelques «doublons» lorsque les URL contiennent parfois «www» et parfois non. Le code handling the duplicate detection est:Comment éliminer les URL MySQL "dupliquées" qui peuvent commencer ou non par www?
case 0: //url-based
$sql = "SELECT n.nid
FROM {node} n
INNER JOIN {feedapi_node_item} i ON i.nid=n.nid
WHERE type='%s' AND url = '%s'
LIMIT 1";
$dnid = db_result(db_query($sql,
variable_get('feedapi_dedupe_content_type', feedapi_dedupe_content_type()),
$url));
break;
Est-il possible de modifier le SQL pour gérer aussi le www/sans www cas? Sinon, existe-t-il un moyen de le gérer dans une requête SQL séparée à la place?
Que contient '$ url'? L'URL complète ou juste le domaine? – kiamlaluno
kiamlanu, $ url contient l'URL complet, tel que: http://stackoverflow.com/questions/3374539/comment-diminuer-dupliquer-url-mysql-rows-qui-may-a-may-not -start-with-www –
Doh! Le code que j'ai posté n'est que la moitié de la bataille. Il évite les doublons lors de l'ajout de nouvelles entrées. Une autre fonction supprime les doublons déjà ajoutés: cas 0: // base url $ sql = "SELECT GROUP_CONCAT (i.nid SEPARATOR ',') comme nids,' titre', 'url', compte (*) en num FROM {} nœud n INNER JOIN {feedapi_node_item} i = ON i.nid n.nid OU type = '% de' GROUP BY '' url' PRESENTANT url' IS NOT NULL et l'URL! = '' ET num> 1 ORDER BY num desc LIMIT% d "; pause; Je déteste même demander, puisque vous avez tous deux été super utile, mais toutes les pensées sur cette section seraient également grandement appréciées! –