2 つのテーブルがあります。簡略化したバージョンを示します。最初のテーブルから正確な一致を見つけようとしています.2番目のテーブルにエントリの正確なリストがあります(結合テーブルの複数の個々のレコードが最初のテーブルの主キーと一致するため)。
Table Metrics:
MetricsId: (primary key)
A: (some parameter)
B: (some parameter)
C: (some parameter)
このような:
MetricsId A B C
--------------------------
1 0.5 0.2 3.5
2 0.1 0.1 4.5
3 1.1 1.0 3.0
TABLE Metrics_Grid:
MetricsId (foreign key to Metrics
GridId (foreign key to another table)
MetricsId GridId
---------------------
1 12
1 13
1 14
1 15
2 12
3 13
メトリック テーブルのレコードは、特定のパラメーターおよび特定のグリッド セットに対して生成されたメトリックを表します。2 番目のテーブルは、グリッドのリストを含むテーブルですが、そのメトリック レコードに含まれる各グリッドのレコードがあります。1 つのグリッドを複数のリストに含めることができます (たとえば、1 つのグリッドのメトリックがあり、エントリがあり、そのメトリック エントリがリンク テーブルに 1 つしかない場合、単一のグリッド (実際には、メトリクスが実行されるたびに、各個人、次にグループのメトリクス レコードがあります)
私がする必要があるのは、パラメーターの正確な一致とグリッドのリストが既にデータベースにある場合を見つけ、その一致を返すか、何も返さないことです。したがって、次のような一致を見つける必要があります。
開始するには、一致する必要がある正確な gridID のリストがあります (これは、Spring JdbcTemplate を使用して Java でコーディングされているため、必要な形式でリストを渡すことができます)
Select M.* from Metrics M
Where
A=? AND B=? AND C=?
AND
EXISTS (SELECT MG.GridId From MetricsGrid MG where MG.MetricsId=M.MetricsId)
** This is where I get lost **
AND <THE LIST OF THE THE GridsIds matches exactly the list I have>
私は間違っていたことをいくつか試しましたが、なぜ間違っていたのかはわかっています。たとえば、次のように、grid_id を持つメトリクス レコードがすべて返されたため、1 つではなく複数の値が得られました。
たとえば、A=0.5、B=0.2、c=3.5 AND GridIds = (12, 13, 14, 15) に一致する Metrics レコードを要求できるようにしたい、または同様に、同じパラメーターに一致する Metrics レコード、ただし、GridId 12 のみ
私の試みは常にすべてのレコードを返します。Group By を使用してみました.. Count() を使用しましたが、正しく取得できませんでした。これは難しいことではなく、頭が固まっているだけだと思います。
似たようなものは見つけられませんでしたが、一般的なものでしょうか?
洞察をありがとう。