Requete SQL
Fermé
mijeonasteroid
Messages postés
5
Date d'inscription
mercredi 30 mai 2012
Statut
Membre
Dernière intervention
31 mai 2012
-
30 mai 2012 à 17:03
Colbi97 Messages postés 564 Date d'inscription mardi 3 mars 2009 Statut Membre Dernière intervention 25 novembre 2015 - 31 mai 2012 à 15:17
Colbi97 Messages postés 564 Date d'inscription mardi 3 mars 2009 Statut Membre Dernière intervention 25 novembre 2015 - 31 mai 2012 à 15:17
A voir également:
- Requete SQL
- Erreur lors de l'envoi de la requête facebook marketplace - Forum Facebook
- Il y a eu un problème avec cette requête. nous travaillons à sa résolution aussi vite que nous le pouvons. - Forum Facebook
- Sql server recovery - Télécharger - Gestion de données
- Logiciel sql - Télécharger - Bases de données
- Requête sql doublons sur 2 champs ✓ - Forum Programmation
8 réponses
Colbi97
Messages postés
564
Date d'inscription
mardi 3 mars 2009
Statut
Membre
Dernière intervention
25 novembre 2015
12
30 mai 2012 à 17:37
30 mai 2012 à 17:37
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)+'%'))
mijeonasteroid
Messages postés
5
Date d'inscription
mercredi 30 mai 2012
Statut
Membre
Dernière intervention
31 mai 2012
31 mai 2012 à 10:09
31 mai 2012 à 10:09
$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.
Colbi97
Messages postés
564
Date d'inscription
mardi 3 mars 2009
Statut
Membre
Dernière intervention
25 novembre 2015
12
31 mai 2012 à 11:00
31 mai 2012 à 11:00
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...
mijeonasteroid
Messages postés
5
Date d'inscription
mercredi 30 mai 2012
Statut
Membre
Dernière intervention
31 mai 2012
31 mai 2012 à 11:49
31 mai 2012 à 11:49
Mon moteur de bdd est en MyIsam mais je ne sais aboslument pas comment faire une recherche fulltext pour ce cas là
Colbi97
Messages postés
564
Date d'inscription
mardi 3 mars 2009
Statut
Membre
Dernière intervention
25 novembre 2015
12
Modifié par Colbi97 le 31/05/2012 à 11:52
Modifié par Colbi97 le 31/05/2012 à 11:52
As-tu lu la page de documentation que j'avais mise en lien ?
Qu'est-ce que tu ne comprends pas?
Qu'est-ce que tu ne comprends pas?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
mijeonasteroid
Messages postés
5
Date d'inscription
mercredi 30 mai 2012
Statut
Membre
Dernière intervention
31 mai 2012
31 mai 2012 à 12:07
31 mai 2012 à 12:07
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.
Colbi97
Messages postés
564
Date d'inscription
mardi 3 mars 2009
Statut
Membre
Dernière intervention
25 novembre 2015
12
Modifié par Colbi97 le 31/05/2012 à 12:36
Modifié par Colbi97 le 31/05/2012 à 12:36
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 ?
mijeonasteroid
Messages postés
5
Date d'inscription
mercredi 30 mai 2012
Statut
Membre
Dernière intervention
31 mai 2012
31 mai 2012 à 14:07
31 mai 2012 à 14:07
$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
Colbi97
Messages postés
564
Date d'inscription
mardi 3 mars 2009
Statut
Membre
Dernière intervention
25 novembre 2015
12
31 mai 2012 à 15:17
31 mai 2012 à 15:17
Hum...
Tu veux comparer chaque lignes de ta base aux autres lignes ?
Dans ce cas il va falloir passer par une boucle en pensant à exclure de la comparaison la ligne en cours...
Tu veux comparer chaque lignes de ta base aux autres lignes ?
Dans ce cas il va falloir passer par une boucle en pensant à exclure de la comparaison la ligne en cours...