マシンに接続されたタグのみを使用するテストを選択する必要があります。WHERE(サブクエリ)IN(サブクエリ)は可能ですか?
タグは多くのテストからです。 (TagTest連想テーブル)
タグがマシンに多くの多くのです。 (TagMachineアソシアティブテーブル)
例:
テストタグ[A、B、C]を有しており、マシンが[A、B、D]テストが原因選択されるべきではない持っている場合そのタグはMachineのタグのサブセットではありません。
テストタグ[A、B]を有し、マシンは[A、B、D]試験が含まれるべきである持っている場合。
テストは、それが常に含まれるべきではタグがない場合。この構造のような
何か作業をする必要があります:
SELECT *
FROM Test te
WHERE
(SELECT tt.tagId
FROM TagTest tt
WHERE tt.testId = te.Id)
IN
(SELECT tm.tagId
FROM TagMachine tm
WHERE tm.machineId = 123)
しかし、クエリのこの種は可能ですか?そうでない場合は、どのようにして目的の結果を達成することができますか?
[ 'ALL'](https://www.postgresql.org/docs/current/static/functions-subquery.html#FUNCTIONS-SUBQUERY-ALL)演算子を確認してください。 – zerkms
@zerkms ALL演算子も左の値をスカラーにする必要はありませんか? – Noozen
あなたは正しいですが、それは無関係です、私は目を覚まして、効率的に考える準備ができていません。ごめんなさい。 – zerkms