以下の簡略化された例のように、MySQLで多対多の関係を使用しています。私がやりたいのは、カテゴリIDを指定し、そのカテゴリに含まれるオブジェクトを見つけて、そのカテゴリのみを検索することです。
カテゴリ内のすべてのオブジェクトを簡単に取得できます。
SELECT * from object INNER JOIN link ON object.objectID = link.objectID WHERE link.categoryID=1;
これにより、object1とobject2が得られますが、object2もcategory2に含まれているため、必要なのはobject1だけです。
私が考えることができた唯一のことは、これをサブクエリとして使用して、それらのオブジェクトIDのすべてのリンクを取得し、カウントが1のリンクを取得することでした。
もっと簡単で効率的な方法があることを願っています!
-- Table: object
+---------+-----------+
| id | name |
+---------+-----------+
| 1 | object1 |
| 2 | object2 |
+---------+-----------+
-- Table: category
+------+-----------+
| id | name |
+------+-----------+
| 1 | category1 |
| 2 | category2 |
+------+---------+
-- Table: link
+-----------+-------------+
| objectid | categoryid |
+-----------+-------------+
| 1 | 1 |
| 2 | 1 |
| 2 | 2 |
+-----------+-------------+