多対多の関係を持つ単純なSQLリレーショナルモデルがあります。これが構成表です
___________________________ | object1_id | object2_id | | --------------------------- |
object1のセットに共通するすべてのことを知りたいですobject2。私の基本的な気持ちは、このようなリクエストをすることです
SELECT c.object1_id FROM composition c WHERE c.object2_id = <given_id_1>
INTERSECT
SELECT c.object1_id FROM composition c WHERE c.object2_id = <given_id_2>
セットにN個のobject2がある場合は、Nを実行しますINTERSECT
SELECT c.object1_id FROM composition c WHERE c.object2_id = <given_id_1>
INTERSECT
SELECT c.object1_id FROM composition c WHERE c.object2_id = <given_id_2>
...
INTERSECT
SELECT c.object1_id FROM composition c WHERE c.object2_id = <given_id_N>
ただし、あまり最適化されていないように見えます。手伝って頂けますか ?私は実際にはSQLの専門家ではありません。JOINを使ってそれを行うことができると思います。
サンプル
___________________________ | object1_id | object2_id | | --------------------------- | | 10 | 1 | | 11 | 1 | | 10 | 2 | | 12 | 2 | | 10 | 3 | | 11 | 3 | | 13 | 3 |
例
- {
object2_id設定}=>{期待されるobject1_id} - {1、2} => {10}
- {1、3} => {10、11}
- {1、2、3} => {10}