1

Table1
...
LogEntryID*PrimaryKey*

ThresholdID - - - このログ エントリに適用される適切なしきい値へのリンク。
...

Table2
...
ThresholdID*PrimaryKey*
しきい値
...

すべてのフィールドは整数です。
「...」は、これらのテーブルがこれよりも多くの情報を保持していることを示すためにあります。これらは何らかの理由でこのように設定されており、現時点では変更できません。

特定のログ レコードの Value フィールドが、Table2のリンクされたレコードの Threshold フィールドより小さい場合、 Table1からすべてのレコードを選択する SQL ステートメントを作成する必要があります。

私はSQLに慣れていないので、これが基本的な質問であることを知っています。
この SQL ステートメントがどのように構造化されるかを誰かが教えてくれれば、大歓迎です。

4

5 に答える 5

4
SELECT T1.*
  FROM Table1 T1
  JOIN Table2 T2 ON T2.ThresholdID = T1.ThresholdID
 WHERE T2.Threshold > T1.Value
于 2009-07-17T19:35:30.570 に答える
1
SELECT * FROM Table1
JOIN Table2
ON table1.ThresholdID = table2.ThresholdID --(assuming table 2 holds the same value to link them together)
WHERE
value < thresholdvalue

「JOIN」は、「ON」句に基づいて 2 つのテーブルを接続します (「AND」と「OR」を使用してマルチパートにすることができます)。

テーブル 2 に、テーブル 1 の主キー (1 対多の関連付け) を共有する 3 つのエントリがある場合、結果セットには 3 つの行が含まれます。

たとえば、次の表の場合:

Table 1:
Key     Value
1       Hi
2       Bye

Table 2:
Table1Key  2nd_word
1           You
1           fellow
1           friend
2           now

このクエリ:

SELECT * FROM Table1 JOIN Table2 on table1.key = table2.table1key

この結果セットを取得します:

Key    Value    Table1Key   2nd_word
1      Hi        1          You
1      Hi        1          fellow
1      Hi        1          friend
2      Bye       2          now

JOIN は、2 番目のテーブルに一致がある場合にのみ結果を返します。一致がない場合は結果を返さないことに注意してください。そのために LEFT JOIN を使用できます (2 番目のテーブルのすべてのフィールドは NULL になります)。

JOIN は連結することもでき、前の JOIN の結果が元のテーブルの代わりに使用されます。

于 2009-07-17T19:34:40.900 に答える
1
SELECT t1.*
FROM dbo.Table1 t1 INNER JOIN dbo.Table2 t2 ON t1.ThresholdID = t2.ThresholdID
WHERE t2.Threshold > t1.Value
于 2009-07-17T19:35:40.210 に答える
1

SELECT * from table1 t1 join table2 t2 on (t1.thresholdId = t2.thresholdId) where t1.value < t2.threshold;

于 2009-07-17T19:35:45.657 に答える
1
SELECT t1.LogEntryID, t1.Value, t1.ThresholdID
FROM Table1 t1 
INNER JOIN Table2 t2 ON t1.ThresholdID = t2.ThresholdID 
WHERE t1.Value < t2.threshold
于 2009-07-17T19:36:14.797 に答える