【发布时间】:2011-03-03 01:58:40
【问题描述】:
以下是回答理解系统所需的表格和数据的转储:-
系统由导师和班级组成。 表 All_Tag_Relations 中的数据存储每个注册的导师和导师创建的每个班级的标签关系。标签关系用于搜索类。
CREATE TABLE IF NOT EXISTS `Tags` (
`id_tag` int(10) unsigned NOT NULL auto_increment,
`tag` varchar(255) default NULL,
PRIMARY KEY (`id_tag`),
UNIQUE KEY `tag` (`tag`),
KEY `id_tag` (`id_tag`),
KEY `tag_2` (`tag`),
KEY `tag_3` (`tag`),
KEY `tag_4` (`tag`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO `Tags` (`id_tag`, `tag`) VALUES
(1, 'Sandeepan'),
(2, 'Nath'),
(3, 'first'),
(4, 'class'),
(5, 'new'),
(6, 'Bob'),
(7, 'Cratchit');
CREATE TABLE IF NOT EXISTS `All_Tag_Relations` (
`id_tag` int(10) unsigned NOT NULL default '0',
`id_tutor` int(10) default NULL,
`id_wc` int(10) unsigned default NULL,
KEY `All_Tag_Relations_FKIndex1` (`id_tag`),
KEY `id_wc` (`id_wc`),
KEY `id_tag` (`id_tag`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO `All_Tag_Relations` (`id_tag`, `id_tutor`, `id_wc`) VALUES
(1, 1, NULL),
(2, 1, NULL),
(3, 1, 1),
(4, 1, 1),
(6, 2, NULL),
(7, 2, NULL),
(5, 2, 2),
(4, 2, 2),
(8, 1, 3),
(9, 1, 3);
以下是我的查询:-
此查询搜索“first class”(标签表中 first = 3 和 class= 4 的标签)并返回所有这些类,使得类名中同时存在术语 first 和 class。
SELECT wtagrels.id_wc,SUM(DISTINCT( wtagrels.id_tag =3)) AS
key_1_total_matches,
SUM(DISTINCT( wtagrels.id_tag =4)) AS
key_2_total_matches
FROM all_tag_relations AS wtagrels
WHERE ( wtagrels.id_tag =3
OR wtagrels.id_tag =4 )
GROUP BY wtagrels.id_wc
HAVING key_1_total_matches = 1
AND key_2_total_matches = 1
LIMIT 0, 20
它返回 id_wc = 1 的类。
但是,我希望搜索显示所有这些课程,以便所有搜索词都出现在课程名称或其导师名称中 因此,搜索“Sandeepan 类”(wtagrels.id_tag = 1,4)或“Sandeepan Nath”也会返回 id_wc=1 的类。和搜索。搜索“Bob First”不应返回任何类。
请修改上述查询或建议一个新查询,如果可能的话使用 MyIsam - 全文搜索,但以某种方式帮助我获得结果。
【问题讨论】:
-
10 个问题,0 个答案。请更改该费率。
-
Sev 是对的。如果您不接受答案,没有人愿意帮助您。
-
我还没有得到解决我问题的确切答案。如果我只是随机接受答案,它将如何帮助其他人?但是,我对有用或导致积极方向的答案竖起大拇指。所以请帮忙,好的答案会提高你的声誉