【发布时间】:2014-11-23 07:07:43
【问题描述】:
我尝试使用内连接来查找相关行。
但似乎它什么也没返回。请指教。
基本上,我已经从每篇文章的原始页面标题和描述中分解了所有关键字。所以,当我来搜索时,我可以查询关键字表。
这是一篇带关键词的文章
-- 表架构
CREATE TABLE article ( id INT, title TEXT, description TEXT );
CREATE TABLE keyword ( id INT, keyword VARCHAR(255) );
CREATE TABLE article_keyword ( article_id INT, keyword_id INT );
-- 增加第1条
insert into article set
id = 1,
title = "my text book like a black hole",
description = "I have a text book. Any people who read it and after days they will disappear. etc...";
--为文章1添加关键字
insert into keyword set
id = 1,
keyword = "text book";
insert into keyword set
id = 2,
keyword = "black hole";
insert into article_keyword set
article_id = 1,
keyword_id = 1;
insert into article_keyword set
article_id = 1,
keyword_id = 2;
-- 添加第2条
insert into article set
id = 2,
title = "the fact of deep space black hole",
description = "More researches are telling fake story about black holes is exists. But my alien friend tell me it is wrong ... etc";
--为文章2添加关键字
insert into keyword set
id = 3,
keyword = "research";
insert into keyword set
id = 4,
keyword = "alien";
insert into article_keyword set
article_id = 2,
keyword_id = 2;
insert into article_keyword set
article_id = 2,
keyword_id = 3;
insert into article_keyword set
article_id = 2,
keyword_id = 4;
-- 使用“教科书”查找,预期1篇
SELECT article.id, title FROM article
JOIN article_keyword ak ON ak.article_id = article.id
JOIN keyword k1 ON ak.keyword_id = k1.id
WHERE k1.keyword = "text book"
-- 使用“黑洞”寻找,预计2篇
SELECT article.id, title FROM article
JOIN article_keyword ak ON ak.article_id = article.id
JOIN keyword k2 ON ak.keyword_id = k2.id
WHERE k2.keyword = "black hole"
-- 当搜索一本书包含所有这些关键字时,则没有。
SELECT article.id, title FROM article
JOIN article_keyword ak ON ak.article_id = article.id
JOIN keyword k1 ON ak.keyword_id = k1.id
JOIN keyword k2 ON ak.keyword_id = k2.id
WHERE k1.keyword = "text book"
AND k2.keyword = "black hole";
知道mysql不能把第1条还给我吗?
这个查询有什么问题吗?
谢谢!
【问题讨论】:
标签: mysql many-to-many inner-join