我有一个使用笨CXTags标记库的应用程序。
数据库结构如下:
帖子
ID
tags_ref
ROW_ID
表
TAG_ID
标签
ID
safe_tag
标签
我查询基本上去,如果$ safe_tag不为空,然后加入tags_ref上post.id = tags_ref.row_id,在tags_ref.tag_id = tags.id,其中tags_ref.table =“职位”和tags.safe_tag =“食物”加入标签
SELECT * FROM posts
JOIN tags_ref ON posts.id = tags_ref.row_id
JOIN tags ON tags_ref.tag_id = tags.id
WHERE tags.safe_tag = $safe_id
不幸的是我已经写在活动记录的查询不正常。 查询完美的作品时£safe_tag为空,但是当它不是我得到错误的结果。
function get_posts($id = NULL, $safe_tag = NULL) {
if($safe_tag != NULL){
echo $safe_tag;//debugging
$table = 'posts';
$this->db->join('tags_ref', 'posts.id = tags_ref.row_id');
$this->db->join('tags', 'tags_ref.tag_id = tags.id');
$this->db->where('tags_ref.table', $table);
$this->db->where('tags.safe_tag',$safe_tag);
}
//if an id was supplied
if ( $id != NULL ) {
$this->db->where('posts.city_id',$id);
}
// execute query
$query = $this->db->get('posts');
...
下面是剖析的查询:
SELECT *
FROM (`posts`)
INNER JOIN `tags_ref` ON `posts`.`id` = `tags_ref`.`row_id`
INNER JOIN `tags` ON `tags_ref`.`tag_id` = `tags`.`id`
WHERE `tags_ref`.`table` = 'posts'
AND `tags`.`safe_tag` = 'food'
AND `posts`.`city_id` = '2'
有人可以看看吗? 我想我需要一套新的就可以了眼睛。