1

私はしばらくの間、この選択に苦労してきました.StackOverflowを検索して、たくさんのものを試しましたが、私の特定の問題に役立つものは何もありません. たぶん、私は明らかな何かを見逃しているだけです。

2 つのテーブルがあります: Measurements、MeasurementFlags

「測定値」にはデバイスからの測定値が含まれ、各測定値には、問題の測定値が何らかの形で特別であることを示すために、それらに関連付けられたプロパティ/属性 (一般に「フラグ」として知られている) を含めることができます (たとえば、1 つのフラグがテストまたは校正測定)。注: フラグごとに 1 つのレコード!

そうです、「Measurements」テーブルのレコードには、理論的には無制限の量の MeasurementFlags を添付することも、まったく添付しないこともできます。

ここで、"X" 値の "MeasurementFlag" が添付された "Measurements" からレコードを選択する必要がありますが、値が "Y" のフラグが添付されていてはなりません。

ここでは、数億行のかなり大規模なデータベースについて話しているため、このすべてのロジックを 1 つのクエリ内に収めようとしています。それを分割すると、あまりにも多くのクエリが作成されますが、1 つのクエリで実行できない場合は、選択肢がないと思います。

前もって感謝します。

4

1 に答える 1

1
SELECT measurements.*
FROM   measurements
INNER JOIN measurement_flag
        ON measurements.measurement_id = measurement_flag.measurement_id
       AND flag = 'X'
       AND 'Y' NOT IN (
               SELECT flag
               FROM   measurement_flag
               WHERE  measurement_id = measurements.measurement_id);
于 2012-06-03T16:29:34.043 に答える