因此,我有一个活动记录查询,我在Codeigniter框架下使用PHP进行操作,我想选择所有条目(在下面命名为'tracks')一个连接中的某个值被满足(与轨道相关的'标签' - 每个轨道可以有多个标签绑定在它上面)。我想知道的是,如果有一种方法可以让查询查找具有与其关联的所有选定标签的曲目。因此,不是让所有曲目的links.tag_id为1,而是使用links.tag_id为2的所有曲目,它会返回所有曲目的links.tag_id为1以及2.本质上,它是一个减法查询,它将您选择的结果缩小到您添加的更多标记。这是我迄今打算:MySQL查询满足所有值(减法查询)
$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');
正在寻找一个左外连接到你的标签表?不知道我完全理解你要求数据库的内容。你能澄清吗? – Kevin
对不起,仍然试图包裹我的头。我有一个'链接'表,标签和曲目ID的链接。每个曲目可以有多个标签链接到它。假设您想要抓取每个与该轨道关联的标记为1,2和5的轨道(在链接表的单独行中),但不是1,2或5。 – jpea