le 06/08/2004 à 05:03
os2
salut
je désire faire une recherche selon le nom de l'auteur ou du texte rentré par un usager
j'utilise mysql
CREATE TABLE `reponse` (
`REP_NOREPONSE` int(11) NOT NULL auto_increment,
`MES_NOMESSAGE` int(11) NOT NULL default '0',
`MEM_NOMEMBRE` int(11) NOT NULL default '0',
`REP_REPONSE` text,
`REP_DATE` timestamp(14) NOT NULL,
PRIMARY KEY (`REP_NOREPONSE`)
) TYPE=MyISAM AUTO_INCREMENT=22 ;
CREATE TABLE `message` (
`MES_NOMESSAGE` int(11) NOT NULL auto_increment,
`SEC_NOSECTION` int(11) NOT NULL default '0',
`MEM_NOMEMBRE` int(11) NOT NULL default '0',
`MES_MESSAGE` text,
`MES_DATE` timestamp(14) NOT NULL,
`MES_TITRE` varchar(100) default NULL,
PRIMARY KEY (`MES_NOMESSAGE`)
) TYPE=MyISAM AUTO_INCREMENT=34 ;
CREATE TABLE `membre` (
`MEM_NOMEMBRE` int(11) NOT NULL auto_increment,
`MEM_NOM` varchar(30) NOT NULL default '',
`MEM_PRENOM` varchar(30) NOT NULL default '',
`MEM_NOMUSAGER` varchar(30) NOT NULL default '',
`MEM_MOTPASSE` varchar(30) NOT NULL default '',
`MEM_COURRIEL` varchar(30) NOT NULL default '',
`MEM_TYPE` int(11) NOT NULL default '0',
`MEM_SITEWEB` varchar(100) default NULL,
`MEM_SIGNATURE` varchar(50) default NULL,
`MEM_NBMESSAGE` int(11) default '0',
PRIMARY KEY (`MEM_NOMEMBRE`)
) TYPE=MyISAM AUTO_INCREMENT=6 ;
lors d'une requete j'obtient en paramètre soit un nom d'auteur soit un texte sois les deux
je veux faire une recherche full text (match AGAINST) sur les champs mes_message (table message) et rep_reponse (table reponse)
l'usager pourrait aussi choisir la section voulue... (ce qui j'ai pas mis dans la requete ci-jointe)
étant donné qu'il peut avoir que auteur ou le texte peut être vide, je sais pas si c'est faisable en une seul requete? et si ça serait mieux de le faire en une seul requete ou plusieurs...
si un element reponse concorde, on envois le message qui lui est lié ...
j'avais codé ça
SELECT mes_titre, sec_nomsection, rep_reponse, mem_nomusager
FROM message mes
INNER JOIN section s ON s.sec_nosection = mes.sec_nosection
INNER JOIN reponse rep ON mes.mes_nomessage = rep.mes_nomessage
INNER JOIN membre mem ON mem.mem_nomembre = mes_mem_nomembre
WHERE MATCH ( mes_message, rep_reponse )
AGAINST ( 'allo' ) OR MEM_NOMUSAGER = 'paul'
mais MySQL me dit Wrong arguments to MATCH
de plus je sais pas si je devrais mettre:
INNER JOIN membre mem1 ON mem1.mem_nomembre = rep_mem_nomembre
des suggestions, idée?
merci
--
La boîte à prog http://www.laboiteaprog.com
je désire faire une recherche selon le nom de l'auteur ou du texte rentré par un usager
j'utilise mysql
CREATE TABLE `reponse` (
`REP_NOREPONSE` int(11) NOT NULL auto_increment,
`MES_NOMESSAGE` int(11) NOT NULL default '0',
`MEM_NOMEMBRE` int(11) NOT NULL default '0',
`REP_REPONSE` text,
`REP_DATE` timestamp(14) NOT NULL,
PRIMARY KEY (`REP_NOREPONSE`)
) TYPE=MyISAM AUTO_INCREMENT=22 ;
CREATE TABLE `message` (
`MES_NOMESSAGE` int(11) NOT NULL auto_increment,
`SEC_NOSECTION` int(11) NOT NULL default '0',
`MEM_NOMEMBRE` int(11) NOT NULL default '0',
`MES_MESSAGE` text,
`MES_DATE` timestamp(14) NOT NULL,
`MES_TITRE` varchar(100) default NULL,
PRIMARY KEY (`MES_NOMESSAGE`)
) TYPE=MyISAM AUTO_INCREMENT=34 ;
CREATE TABLE `membre` (
`MEM_NOMEMBRE` int(11) NOT NULL auto_increment,
`MEM_NOM` varchar(30) NOT NULL default '',
`MEM_PRENOM` varchar(30) NOT NULL default '',
`MEM_NOMUSAGER` varchar(30) NOT NULL default '',
`MEM_MOTPASSE` varchar(30) NOT NULL default '',
`MEM_COURRIEL` varchar(30) NOT NULL default '',
`MEM_TYPE` int(11) NOT NULL default '0',
`MEM_SITEWEB` varchar(100) default NULL,
`MEM_SIGNATURE` varchar(50) default NULL,
`MEM_NBMESSAGE` int(11) default '0',
PRIMARY KEY (`MEM_NOMEMBRE`)
) TYPE=MyISAM AUTO_INCREMENT=6 ;
lors d'une requete j'obtient en paramètre soit un nom d'auteur soit un texte sois les deux
je veux faire une recherche full text (match AGAINST) sur les champs mes_message (table message) et rep_reponse (table reponse)
l'usager pourrait aussi choisir la section voulue... (ce qui j'ai pas mis dans la requete ci-jointe)
étant donné qu'il peut avoir que auteur ou le texte peut être vide, je sais pas si c'est faisable en une seul requete? et si ça serait mieux de le faire en une seul requete ou plusieurs...
si un element reponse concorde, on envois le message qui lui est lié ...
j'avais codé ça
SELECT mes_titre, sec_nomsection, rep_reponse, mem_nomusager
FROM message mes
INNER JOIN section s ON s.sec_nosection = mes.sec_nosection
INNER JOIN reponse rep ON mes.mes_nomessage = rep.mes_nomessage
INNER JOIN membre mem ON mem.mem_nomembre = mes_mem_nomembre
WHERE MATCH ( mes_message, rep_reponse )
AGAINST ( 'allo' ) OR MEM_NOMUSAGER = 'paul'
mais MySQL me dit Wrong arguments to MATCH
de plus je sais pas si je devrais mettre:
INNER JOIN membre mem1 ON mem1.mem_nomembre = rep_mem_nomembre
des suggestions, idée?
merci
--
La boîte à prog http://www.laboiteaprog.com