begin process at 2010 03 18 03:03:51
  Trouver un code source :
 
dans
 
Accueil > Forum > 

SQL

 > 

MySQL

 > 

Requêtes

 > 

Recherche de texte


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Recherche de texte

samedi 21 juin 2008 à 15:42:52 | Recherche de texte

jobijobar

Bonjour à tous,

j'ai un problème lors de l'execution d'un requete.

Table t1 : id, text1, text2, text3, text4, text5
Table t2 : id, id2, field1, field2, field3, field4, field5

La requete:

SELECT t1.*, t3.* FROM t1 LEFT JOIN (SELECT * FROM t2 WHERE id2='123') AS t3 ON t1.id=t3.id MATCH(t1.text1, t1.text2) AGAINST ('+toto' IN BOOLEAN MODE)
me renvoie x éléments (disons qu'elle retourne ce que j'attends)

mais la requete:
SELECT t1.*, t3.* FROM t1 LEFT JOIN (SELECT * FROM t2 WHERE id2='123') AS t3 ON t1.id=t3.id MATCH(t1.text1, t1.text2, t3.field1, t3.field2) AGAINST ('+toto' IN BOOLEAN MODE)

ne me renvoie jamais rien alors qu'elle devrait renvoyer au-moins autant d'éléments que la 1ère non ???

Vous allez me dire 2 choses:
  1. "NON"   bein je sais puisque si elle devait renvoyer au-moins autant d'éléments que la 1ère elle le ferait
  2. Que ma requete n'est pas belle avec cette table temporaire créée
D'une part je suis d'accord avec vous: cette requete n'est pas belle.

Le problème c'est que je suis en train de la modifier mais ce n'est pas la seule de ce genre à modifier et pour l'instant j'ai besoin de corriger cette satanée requete et de faire fonctionner MATCH conformément à mes attentes.

J'ai donc besoin d'un gros coup de main (pas dans la figure hein ?!)

Merci d'avance

dimanche 29 juin 2008 à 05:16:21 | Re : Recherche de texte

Farfadh

Si ta requête n'est pas belle, ce n'est pas entièrement de ta faute, mais celle de SQL qui ne permet pas d'enregistrer le résultat d'une requête dans une variable et de faire quelque chose de plus léger comme :
SET @resultat= (SELECT* FROMtable);
SELECT * FROM@resultat ASalias;

Sinon je crois que tu as oublié quelque chose dans la requête, sauf erreur de ma part. MATCH est une fonction de comparaison de texte, pas un mot clé. Donc il manque quelque chose dans la structure de ta requête entre la clause ON et cette fonction.

Cas de figure ON ... AND MATCH ... : j'espère que ce n'est pas ça que tu as fait, parce qu'on ne doit pas utiliser la clause ON pour sélectionner des lignes, et il serait très probable que l'erreur vienne de là.

Cas de figure ON ... WHERE MATCH ... : là, le mauvais comportement de ta requête serait plus énigmatique, mais j'attend de savoir ce que tu as fait pour chercher davantage.

Sinon, ne peux-tu pas formuler ta requête de la manière suivante, et est-ce que ça résoud quelque chose, c'est équivalent, ou ça empire encore la situation ?
SELECT t1.*, t3.*FROMt1 LEFT JOINt2 ONt1.id= t2.id WHEREt2.id2= '123' AND MATCH...

dimanche 29 juin 2008 à 12:25:29 | Re : Recherche de texte

jobijobar

Merci Farfadh pour ta réponse,

c'est vrai que je n'ai pas été très clair (c'est souvent comme ça quand on veut expliquer simplement quelque chose qui nous parait clair )

en fait la requête que j'utilise ressemble plus à celle que tu me proposes, sauf que je dois aussi récupérer les lignes NULL de t2 puisque si tu veux t2 est un table de commentaire d'utilisateurs sur t1 donc un utilisateur donnée peut avoir ou ne pas avoir de commentaire dans t2.

Donc ça serait plutot SELECT t1.*, t3.* FROM t1 LEFT JOIN t2 ON t1.id=t2.id WHERE (t2.id2= '123' ORt2.idIS NULL)AND MATCH(t2.conf, t2.comm) AGAINST ('+recherche'IN BOOLEAN MODE)

Merci vraiment de m'aider c'est super sympa !
Bonne journée
dimanche 29 juin 2008 à 17:31:03 | Re : Recherche de texte

Farfadh

Donc tu aimerais récupérer les enregistrements de t1 même quand il n'y a pas de correspondance dans t2 ? Je n'utilise pas beaucoup les jointures. Le code que tu as donné fonctionne-t'il ? Normallement selon le manuel de MySQL, cela devrait.

Est-ce que la requête marche mieux qu'avant ou as-tu le même problème de recherche qu'avant ?

PS : dans nos requêtes on a SELECT t1.*, t3.* mais il faut bien sûr comprendre SELECT t1.*, t2.* sinon ça n'a pas beaucoup de sens.


Cette discussion est classée dans : t1, requete, select, id, t3


Répondre à ce message

Sujets en rapport avec ce message

Requete et jointure [ par jobijobar ] Re-,bon dans un précédent post j'avais partagé avec vous mon horrible requête, pour ceux qui n'ont pas eu le grand malheur de la voir, c'était :SELECT problème de requete sql avec un delete et un select imbriquer avec un order by [ par flachkiller ] Bonjour, je voudrai savoir comment résoudre se problème : j'ai une requête qui est la suivante : SELECT id_requete, ( SELECT ip FROM machine WHERE Défit pour un pro [ par zazadec ] Question de se compliquer la vie, je dois reprendre un site avec une bdd déjà existante... bref vous avez compris j'ai pas le choix.2 tables T1 et T2 Requete Imbriqué Erreur Aussi :s [ par SF2Boss ] Voici La requete Rebelle : SELECT </s PROBLEME REQUETE SELECT [ par brute ] Bonjour,J'ai un probleme de REQUETE SELECT avec ORacle  .J4ai une table avec 4 colonnes, ID, FACE, PARAM, VALEURl'ID prend les valeurs (1 ou 2 ou 3 ou [MySQL] IF EXISTS avec un SELECT ? [ par putch ] bonjour à tous !comme vous l'aurez compris, j'ai un souci de requete MySQLapres avoir chercher ici http://dev.mysql.com/doc/refman/5.0/f requete avec dernière date [ par ahcorad ] Bonjour,Je boss sur une appli Access et je souhaiterais obtenir le dernier résultat de chaque zone.Je bloque avec la fonction last pour l'imbriquer av utilisation de IsEmpty() [ par bootchoz ] bonjour, je n'arrive pas à utiliser cette fonction.je voudrais verifier si un select me renvoit une cellule vide. J'avais ecrit cela mais @var ne vaut requête SELECT: résultats tronqués... [ par wolflinger ] Bonjour,J'ai un soucis d'affiche avec des formulaires html/php.Mais je pense que le problème provient de la requete SQL.Je m'explique :Via un formulai pourcentage pbl [ par thevman ] bonjour,j'aimerai afficher le pourcentage grace a une requete,le problème c 'est que je ne sais pas comment recuperer ma collonne.Actuellement j'ai ce


Nos sponsors


Appels d'offres

Sondage...

Comparez les prix


HTC Hero

Entre 550€ et 550€

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,076 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales