我正在尝试编写一个SQL语句,该语句将允许我根据关键字从表中选择一系列文章。我有这么远是一个符号表,文章表,和许多一对多表令牌&文章:如何编写一个更好的多行连接来匹配跨行的多个值?
tokens
rowid
token
token_article
token_rowid
article_rowid
articles
rowid
什么,我做的是搜索查询,拆分起来按空格,然后选择包含这些关键字的所有文章。到目前为止,我想出了这一点:
select * from
(select * from tokens
inner join token_article on
tokens.rowid = token_article.token_rowid and
token = 'ABC'
) as t1,
(select * from tokens
inner join token_article on
tokens.rowid = token_article.token_rowid and
token = 'DEF'
) as t2
where t1.article_rowid = t2.article_rowid and t2.article_rowid = articles.rowid
哪些工作,但当然它做一个选择对符合ABC的所有文章和所有文章,DEF然后选择它们。
现在我试图找出更好的方法。我认为在我看来,这将起作用的是选择所有与ABC匹配的文章,并从那些与DEF匹配。这就是我想象它的样子,但不工作(收到错误消息“没有这样的列:tokens.rowid”)
select * from
(select * from
(select * from tokens
inner join token_article on
tokens.rowid = token_article.token_rowid and
token = 'ABC'
)
inner join token_article on
tokens.rowid = token_article.token_rowid and
token = 'DEF'
)
正是它!谢谢!我非常感谢你加入了如何添加更多的标记,因为我的例子只是一个简单的例子。 – jmricker 2012-04-28 17:00:21