A voir également:
- Requete SQL
- Logiciel sql - Télécharger - Bases de données
- Requête sql pour afficher uniquement les fleurs dont le prix est strictement inférieur à 10 euros - Forum calculatrices
- Cherche des haricot vendez les moi ✓ - Forum DS
- Sql (+) - Forum Programmation
- Sql lister les tables ✓ - Forum Programmation
8 réponses
Bonjour,
Il s'agit d'une requête de recherche de doublon ?
Dans ce cas :
Il s'agit d'une requête de recherche de doublon ?
Dans ce cas :
SELECT DISTINCT *
FROM TaTable T1
WHERE EXISTS
(SELECT *
FROM TaTable T2
WHERE T1.NomDeTonID <> T2.NomDeTonID
AND (LOWER(T1.ColonneAContrôler) LIKE '%' + LOWER(T2.ColonneAContrôler) + '%' OR LOWER(T2.ColonneAContrôler) LIKE '%' + LOWER(T1.ColonneAContrôler)+'%'))
$sel_article = mysql_query
("SELECT DISTINCT * FROM articles T1 WHERE EXISTS
(SELECT * FROM articles T2 WHERE T1.id <> T2.id AND (LOWER(T1.titre) LIKE '%' + LOWER(T2.titre) + '%' OR LOWER(T2.titre) LIKE '%' + LOWER(T1.titre)+'%')");
la requête ne marche pas, en faite je cherche a faire sur un site une div ou il y a les articles similaires de l'article affiché dans la page, l'article en question et dans une table "articles" contenant les champs "id" "nom" "titre" "chapeau" "texte" "vignette" "image" "categorie", le titre de l'article etant dans le champ "titre", j'aimerai que la requête affiche des articles contenant des similarités avec le titre de l'article en pleine page en comparant le texte inscrit dans le champ "titre" de la table "articles"
j'arrive a afficher d'autres articles avec une requête simple mais pas les articles qui on une similitudes avec l'article en pleine page.
Merci.
("SELECT DISTINCT * FROM articles T1 WHERE EXISTS
(SELECT * FROM articles T2 WHERE T1.id <> T2.id AND (LOWER(T1.titre) LIKE '%' + LOWER(T2.titre) + '%' OR LOWER(T2.titre) LIKE '%' + LOWER(T1.titre)+'%')");
la requête ne marche pas, en faite je cherche a faire sur un site une div ou il y a les articles similaires de l'article affiché dans la page, l'article en question et dans une table "articles" contenant les champs "id" "nom" "titre" "chapeau" "texte" "vignette" "image" "categorie", le titre de l'article etant dans le champ "titre", j'aimerai que la requête affiche des articles contenant des similarités avec le titre de l'article en pleine page en comparant le texte inscrit dans le champ "titre" de la table "articles"
j'arrive a afficher d'autres articles avec une requête simple mais pas les articles qui on une similitudes avec l'article en pleine page.
Merci.
Ah OK, donc tu ne cherche pas des doublons (titres exactement identiques) mais des articles dont les titres seraient proches.
Dans ce cas je te conseille de t'orienter vers la recherche fulltext qui est très efficace, malheureusement elle n'est possible qu'avec un moteur de bdd MyIsam.
Sinon, il faut faire une fonction de recherche fulltext en php google est ton ami) mais dans ce cas le fonctionnement est plus lent...
Dans ce cas je te conseille de t'orienter vers la recherche fulltext qui est très efficace, malheureusement elle n'est possible qu'avec un moteur de bdd MyIsam.
Sinon, il faut faire une fonction de recherche fulltext en php google est ton ami) mais dans ce cas le fonctionnement est plus lent...
Mon moteur de bdd est en MyIsam mais je ne sais aboslument pas comment faire une recherche fulltext pour ce cas là
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
le problème est que dans le AGAINST() ils mettent un mot précis, moi j'aimerais mettre une variable qui prend ce qu'il y a dans le champ titre( le texte en gros) et qu'il me sorte tous les champ titre qui ont un rapport avec le premier
en gros j'ai mon article du genre "facebook lance son telephone portable" et j'aimerai qu'il m'affiche d'autre article en bas de page ayant un rapport avec "facebook" et cela peut importe le titre de l'article, en passant par facebook usher beyoncé black eyed peas ou tout et n'importe quoi^^
en gros j'ai mon article du genre "facebook lance son telephone portable" et j'aimerai qu'il m'affiche d'autre article en bas de page ayant un rapport avec "facebook" et cela peut importe le titre de l'article, en passant par facebook usher beyoncé black eyed peas ou tout et n'importe quoi^^
Et bien tu divise ta recherche a chaque espace et tu fait ta recherche sur l'index de ton fulltext. Je ne pense pas qu'il y ai une fonction SQL toute faite pour ca, en dehors du LIKE.
Si c'est bien le cas, je te conseil de jeter un oeil aux procédures stockés, qui te feront gagné un temps non négligeable, sur ce genre de requête.
Si c'est bien le cas, je te conseil de jeter un oeil aux procédures stockés, qui te feront gagné un temps non négligeable, sur ce genre de requête.
Il suffit de remplacer le contenu du AGAINST par la variable contenant ce titre (avec toutes les précautions qui s'impose...)
Cette requête te renvoie : l'id et le titre des articles trouvés ainsi que le niveau de ressemblance des titres (MATCH) classés dans l'ordre du plus au moins ressemblant.
Fatal error: Call to undefined function think() in /me/head/brain.php on line 11
In a world without walls and fences, who needs windows and gates ?
$sel_article = mysql_query
("SELECT id, titre, MATCH (titre) AGAINST
('" . $variableContenantLeTitre . "') AS score
FROM articles WHERE MATCH (titre) AGAINST
('" . $variableContenantLeTitre . "');
Cette requête te renvoie : l'id et le titre des articles trouvés ainsi que le niveau de ressemblance des titres (MATCH) classés dans l'ordre du plus au moins ressemblant.
Fatal error: Call to undefined function think() in /me/head/brain.php on line 11
In a world without walls and fences, who needs windows and gates ?
$similar = mysql_query("SELECT titre FROM articles");
$sel_article = mysql_query("SELECT id, titre, MATCH (titre) AGAINST (' ".$similar." ') AS score FROM articles WHERE MATCH (titre) AGAINST (' " .$similar." ')");
Voila la requête que j'ai faite avec ce que tu m'as donné mais lors de l'affichage il me met une erreur mysql_fetch_array(): supplied argument is not a valid MySQL result resource
$sel_article = mysql_query("SELECT id, titre, MATCH (titre) AGAINST (' ".$similar." ') AS score FROM articles WHERE MATCH (titre) AGAINST (' " .$similar." ')");
Voila la requête que j'ai faite avec ce que tu m'as donné mais lors de l'affichage il me met une erreur mysql_fetch_array(): supplied argument is not a valid MySQL result resource