【发布时间】:2012-01-24 21:04:35
【问题描述】:
所以,我有一个活动记录查询,我在 Codeigniter 框架下的 PHP 中执行该查询,我想在其中选择满足连接中某个值的所有条目(下面名为“tracks”)(“tags ' 与轨道相关联 - 每个轨道可以有多个标签绑定到它)。我想知道是否有一种方法可以让查询查找与所有选定标签相关联的曲目。因此,它不是获取所有 links.tag_id 为 1 的曲目,然后获取所有 links.tag_id 为 2 的曲目,而是返回所有 links.tag_id 为 1 和 2 的曲目。本质上,它是一个减法查询,它缩小了所选结果的范围,您添加的标签越多。到目前为止,这是我所做的:
$this->db->select('tracks.id,
tracks.name AS name,
tracks.filename,
tracks.url_name,
tracks.file_path_high,
tracks.filesize,
tracks.categories,
tracks.duration,
tracks.folder,
links.tag_id,
SUM(links.weight) AS total_weight,
tag_data.tag_name');
$this->db->distinct();
$this->db->from('music AS tracks');
$this->db->where_in('links.tag_id', array('1', '2');
$this->db->join('linked_tags AS links', 'links.track_id = tracks.id', 'inner');
$this->db->join('tags AS tag_data', 'tag_data.id = links.tag_id', 'inner');
【问题讨论】:
-
正在寻找标签表的左外连接?不确定我是否完全理解您向数据库询问的内容。你能澄清一下吗?
-
对不起,我还在想办法解决它。我有一个“链接”表,其中标签和曲目 ID 链接起来。每个轨道可以有多个链接到它的标签。假设您要抓取与该轨道相关联的标签为 1、2 和 5 的每个轨道(在链接表的单独行中),但不是 1、2 或 5。
标签: php mysql codeigniter