1

EXPERIMENTAL_RUNS (runId) があり、それぞれに任意の数の SENSORS (sensorId) が関連付けられています。それを念頭に置いて、2 つを結合するための RS テーブルがあります。

==========
RS
==========
runId, sensorId

したがって、runId=1 の実行に sensorId=1、sensorId=6、sensorId=8 のセンサーがある場合、RS テーブルには次の 3 つのエントリがあります。 (runId=1, sensorId=1) (runId=1, sensorId =6) (runId=1、sensorId=8)

これは本当に、センサー {11,13,15} を持つすべての EXPERIMENTAL_RUNS を返す方法ですか? 私が読んだことから、私が望んでいるように見えるのは、ネストされたハッシュ結合です...これはどうなるのですか?

SELECT a.runId
FROM rs a, rs b, rs c
WHERE
a.runId=b.runId AND
b.runId=c.runId AND
a.sensorId=11 AND
a.sensorId=13 AND
b.sensorId=15

明確にするために、センサー 11 と 13 と 15 を持つ EXPERIMENTAL_RUNS のみを返したいと思います。

4

1 に答える 1

3

がテーブルrunId, sensorId内で一意であると仮定すると、3 つすべての s を持つ sが見つかります。rsrunIdsensorId

SELECT runId, COUNT(c) ct
FROM rs
WHERE sensorId IN (11, 13, 15)
GROUP BY runId
HAVING ct = 3
于 2012-12-15T07:29:36.103 に答える