私はPHPでCodeigniterフレームワークの下で実行しているアクティブレコードクエリを持っています。結合の特定の値が満たされます(トラックに関連付けられた「タグ」 - 各トラックには、複数のタグが関連付けられています)。選択したすべてのタグが関連付けられているトラックをクエリで探す方法があると、私は疑問に思っています。つまり、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というタグではなく、そのトラックに関連付けられたタグ(リンクテーブルの別々の行にある)を持つすべてのトラックを取得したいとします。 – jpea