我仍然试图获取SQL的挂件。我构建了一个查询,它从filter_thread(包含'filter_id'和'thread_id'列)表和一个过滤器('filter_id和'tag')表中取出thread_id's'在同一查询中使用INNER JOIN两次
然后,我使用完全不同的查询来查找线程表的内容,其中包含'thread_id'。
我知道这不是最好的办法,但无法获得成功的查询。任何人都可以提供帮助吗?
$query = "SELECT ft0.thread_id
FROM filter f0
INNER JOIN filter_thread ft0 ON ft0.filter_id = f0.filter_id
WHERE f0.tag LIKE '%filter1%'
OR f0.tag LIKE '%filter2%'"
$result = $query->result_array();
$thread = array();
foreach ($result as $thread_id)
{
$id = $thread_id['thread_id'];
$query = $this->db->query("SELECT * FROM thread WHERE thread_id='$id'");
$thisRow = $query->result_array();
array_push($thread, $thisRow[0]);
}
谢谢!
效果很好。谢谢。唯一的问题是一些结果重新复制。如果他们共享在filter1和filter2中找到的重复短语,我认为它会发生。任何想法为什么这可能会发生? – 2012-04-05 17:28:04
不,如果您认为不应该发生,则可能是因为'filter_thread'表中有多个相同'thread_id'的记录,或者'filter_id'中的多个记录存在'filter_id'。如果预期这些重复记录,但您不希望它们放在结果集中,则可以添加一个“DISTINCT”关键字以消除重复(SELECT DISTINCT t。* ...') – gonsalu 2012-04-05 17:33:56
谢谢。他们是预期的,并且是我想要做的事情所必需的。 DISTINCT非常完美。爱学习新事物。 – 2012-04-05 17:37:41