par
Brian » 10 mars 2008, 23:38
Bonjour,
Je cherche à implémenter une fonction de recherche sur mon forum. J'ai donc écrit une requête SQL à cet effet elle ne contient pas d'erreur (à la compilitaion/interprétation) mais son éxécution prend un temp infini... Je dois avoir un malheureux produit cartésien... Ou alors c'est autre chose... Qui a une idée ? Merci.
@+ Brian
PS: SGBD=MySQL
Code : Tout sélectionner
SELECT fsb_messages.message_id, fsb_messages.sujet_id, fsb_messages.message_texte, fsb_sujets.sujet_nom
FROM fsb_messages,fsb_sujets
WHERE fsb_messages.sujet_id=fsb_sujets.sujet_id
AND fsb_messages.message_id IN
(SELECT MIN(message_id)
FROM fsb_messages, fsb_sujets
WHERE fsb_messages.sujet_id=fsb_sujets.sujet_id
AND ((fsb_messages.message_texte LIKE '%shell%')
OR (fsb_sujets.sujet_nom LIKE '%shell%'))
GROUP BY fsb_sujets.sujet_id)
--
-- Structure de la table 'fsb_messages'
--
CREATE TABLE fsb_messages (
message_id int(11) NOT NULL auto_increment,
forum_id mediumint(9) NOT NULL default '0',
sujet_id int(11) NOT NULL default '0',
membre_id int(11) NOT NULL default '0',
pseudo_posteur varchar(30) collate latin1_general_ci NOT NULL default '',
message_texte text collate latin1_general_ci NOT NULL,
message_temps int(20) NOT NULL default '0',
message_ip varchar(20) collate latin1_general_ci NOT NULL default '',
PRIMARY KEY (message_id),
KEY message_id (message_id),
KEY sujet_id (sujet_id)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
-- --------------------------------------------------------
--
-- Structure de la table 'fsb_sujets'
--
CREATE TABLE fsb_sujets (
sujet_id int(11) NOT NULL auto_increment,
forum_id int(11) NOT NULL default '0',
membre_id int(11) NOT NULL default '0',
sujet_nom varchar(250) collate latin1_general_ci NOT NULL default '',
nb_vu int(11) NOT NULL default '0',
nb_reponse int(11) NOT NULL default '0',
dernier_message_id int(11) NOT NULL default '0',
dernier_message_temps int(11) NOT NULL default '0',
premier_message_id int(11) NOT NULL default '0',
sujet_type smallint(6) NOT NULL default '0',
sujet_status tinyint(4) NOT NULL default '1',
PRIMARY KEY (sujet_id),
UNIQUE KEY sujet_id (sujet_id)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
Bonjour,
Je cherche à implémenter une fonction de recherche sur mon forum. J'ai donc écrit une requête SQL à cet effet elle ne contient pas d'erreur (à la compilitaion/interprétation) mais son éxécution prend un temp infini... Je dois avoir un malheureux produit cartésien... Ou alors c'est autre chose... Qui a une idée ? Merci.
@+ Brian
PS: SGBD=MySQL
[code]SELECT fsb_messages.message_id, fsb_messages.sujet_id, fsb_messages.message_texte, fsb_sujets.sujet_nom
FROM fsb_messages,fsb_sujets
WHERE fsb_messages.sujet_id=fsb_sujets.sujet_id
AND fsb_messages.message_id IN
(SELECT MIN(message_id)
FROM fsb_messages, fsb_sujets
WHERE fsb_messages.sujet_id=fsb_sujets.sujet_id
AND ((fsb_messages.message_texte LIKE '%shell%')
OR (fsb_sujets.sujet_nom LIKE '%shell%'))
GROUP BY fsb_sujets.sujet_id)
--
-- Structure de la table 'fsb_messages'
--
CREATE TABLE fsb_messages (
message_id int(11) NOT NULL auto_increment,
forum_id mediumint(9) NOT NULL default '0',
sujet_id int(11) NOT NULL default '0',
membre_id int(11) NOT NULL default '0',
pseudo_posteur varchar(30) collate latin1_general_ci NOT NULL default '',
message_texte text collate latin1_general_ci NOT NULL,
message_temps int(20) NOT NULL default '0',
message_ip varchar(20) collate latin1_general_ci NOT NULL default '',
PRIMARY KEY (message_id),
KEY message_id (message_id),
KEY sujet_id (sujet_id)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
-- --------------------------------------------------------
--
-- Structure de la table 'fsb_sujets'
--
CREATE TABLE fsb_sujets (
sujet_id int(11) NOT NULL auto_increment,
forum_id int(11) NOT NULL default '0',
membre_id int(11) NOT NULL default '0',
sujet_nom varchar(250) collate latin1_general_ci NOT NULL default '',
nb_vu int(11) NOT NULL default '0',
nb_reponse int(11) NOT NULL default '0',
dernier_message_id int(11) NOT NULL default '0',
dernier_message_temps int(11) NOT NULL default '0',
premier_message_id int(11) NOT NULL default '0',
sujet_type smallint(6) NOT NULL default '0',
sujet_status tinyint(4) NOT NULL default '1',
PRIMARY KEY (sujet_id),
UNIQUE KEY sujet_id (sujet_id)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
[/code]