Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Outils
Outils Forum d'entraide sur les outils pour MySQL. Avant de poster -> Outils MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/01/2007, 17h01   #1
Candidat au titre de Membre du Club
 
Avatar de xender
 
Inscription : décembre 2004
Messages : 92
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 92
Points : 13
Points : 13
Par défaut Full-text sur plusieurs tables ?

Bonjour, je voudrais savoir si il est possible de faire un recherche full-text sur plusieurs table en même temps?

J'ai créé l'index full-text sur mes deux tables mais je n'arrive pas a faire m'a requète correctement sur phpmyadmin

Code :
SELECT * FROM customer, coatings WHERE MATCH (company_name,regional_name,distirbutor,sales_rep) AGAINST ('toto')
Voici ma table :
Citation:
CREATE TABLE `customer` (
`story_number` int(11) NOT NULL auto_increment,
`company_name` varchar(50) default NULL,
`date` datetime default NULL,
`regional_name` varchar(50) default NULL,
`city` varchar(50) default NULL,
`state_provence` varchar(4) default NULL,
`distirbutor` varchar(50) default NULL,
`sales_rep` varchar(50) default NULL,
`picture` mediumblob,
`permission` tinyint(1) default NULL,
PRIMARY KEY (`story_number`),
FULLTEXT KEY `company_name` (`company_name`,`regional_name`,`distirbutor`,`sales_rep`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=287 ;
Citation:
CREATE TABLE `coatings` (
`story_number` int(11) default NULL,
`coatings` varchar(50) default NULL,
FULLTEXT KEY `coatings` (`coatings`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
__________________
Xender
Page de démarrage pour Internet
xender est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2007, 17h21   #2
Membre du Club
 
Avatar de Nillak
 
Inscription : octobre 2006
Messages : 138
Détails du profil
Informations personnelles :
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : octobre 2006
Messages : 138
Points : 45
Points : 45
tu as un "coatings.coatings" dans le MATCH, est-ce normal ?
Nillak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2007, 17h25   #3
Candidat au titre de Membre du Club
 
Avatar de xender
 
Inscription : décembre 2004
Messages : 92
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 92
Points : 13
Points : 13
oui désolé j'avais mis la mauvaise requète mais peux-tu m'aider à faire la requète pour rechercher le mot "toto" dans les deux tables?
__________________
Xender
Page de démarrage pour Internet
xender est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2007, 18h16   #4
Membre du Club
 
Avatar de Nillak
 
Inscription : octobre 2006
Messages : 138
Détails du profil
Informations personnelles :
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : octobre 2006
Messages : 138
Points : 45
Points : 45
Je n'ai pas trop le temps, si je ne te répond pas immédiatement c'est que je te répondrai demain, en plus je n'y connais pas grand chose à ces requêtes mais je veux bien t'aider, ça m'apprendra
Peux tu essayer cette requête :

Code :
SELECT *, MATCH (company_name,regional_name,distirbutor,sales_rep) AGAINST ('toto') FROM customer, coatings
et voici un lien à lire je pense ici
Nillak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2007, 20h45   #5
Rédacteur/Modérateur

 
Avatar de Antoun
 
Homme Antoine Dinimant
Consultant en Business Intelligence
Inscription : octobre 2006
Messages : 5 854
Détails du profil
Informations personnelles :
Nom : Homme Antoine Dinimant
Âge : 42
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : octobre 2006
Messages : 5 854
Points : 9 540
Points : 9 540
En mode normal, le MATCH doit obligatoirement utiliser les colonnes de l'index FULLTEXT. Comme tu ne peux pas faire d'index multi-tables, ça suppose que tu fasses deux MATCH au lieu d'un.

En mode booléen (càd qu'il ne cherche pas à calculer la pertinence de toto, mais juste si toto est là ou pas), l'index n'est pas obligatoire, mais accélère bcp les recherches.

Enfin, il serait souhaitable de faire une jointure entre les deux tables , j'imagine que c'est sur story_number.

Donc :
Code :
1
2
3
4
5
6
7
 
SELECT * 
FROM customer Cu
  INNER JOIN coatings Co 
    ON Cu.story_number = Co.story_number
WHERE MATCH (company_name,regional_name,distirbutor,sales_rep) AGAINST ('toto' IN BOOLEAN MODE)
OR MATCH(coatings) AGAINST ('toto' IN BOOLEAN MODE)
__________________
Antoun
Expert SQL, BO, Essbase

La bible d'Essbase est parue !
Antoun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2007, 22h02   #6
Candidat au titre de Membre du Club
 
Avatar de xender
 
Inscription : décembre 2004
Messages : 92
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 92
Points : 13
Points : 13
c'est génial ça marche bien merci Antoun tu m'enlève une épine du pied

Dernière question :

Si je veux faire la même chose mais sur trois tables ?

Citation:
CREATE TABLE `new_equipment` (
`success_number` int(11) default NULL,
`new_equipment` varchar(50) default NULL,
FULLTEXT KEY `new_equipment` (`new_equipment`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Que devient la requète? je veux juste savoir ou replacer les "INNER JOIN" et "ON", comme ça après je serai le faire pour n table

D'avance merci
__________________
Xender
Page de démarrage pour Internet
xender est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2007, 22h39   #7
Rédacteur/Modérateur

 
Avatar de Antoun
 
Homme Antoine Dinimant
Consultant en Business Intelligence
Inscription : octobre 2006
Messages : 5 854
Détails du profil
Informations personnelles :
Nom : Homme Antoine Dinimant
Âge : 42
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : octobre 2006
Messages : 5 854
Points : 9 540
Points : 9 540
Quelle est la correspondance entre ta troisième table et (au moins) l'une des deux autres ?
__________________
Antoun
Expert SQL, BO, Essbase

La bible d'Essbase est parue !
Antoun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2007, 22h42   #8
Candidat au titre de Membre du Club
 
Avatar de xender
 
Inscription : décembre 2004
Messages : 92
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 92
Points : 13
Points : 13
success_number = story_number en fait c'est l'id qui les relient entre elles
__________________
Xender
Page de démarrage pour Internet
xender est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2007, 22h50   #9
Rédacteur/Modérateur

 
Avatar de Antoun
 
Homme Antoine Dinimant
Consultant en Business Intelligence
Inscription : octobre 2006
Messages : 5 854
Détails du profil
Informations personnelles :
Nom : Homme Antoine Dinimant
Âge : 42
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : octobre 2006
Messages : 5 854
Points : 9 540
Points : 9 540
Code :
1
2
3
4
5
...
FROM customer Cu
  INNER JOIN coatings Co ON Cu.story_number = Co.story_number
  INNER JOIN new_equipment N ON Cu.story_number = N.success_number
...
__________________
Antoun
Expert SQL, BO, Essbase

La bible d'Essbase est parue !
Antoun est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h28.


 
 
 
 
Partenaires

Hébergement Web