2009-07-17 49 views
1

表1
...
LogEntryID *PrimaryKey*
价值
ThresholdID - - - 链接到合适的阈值被应用到该日志条目。
...如何使用涉及第二个表的条件编写SQL查询?

表2
...
ThresholdID *PrimaryKey*
阈值
...

所有字段都是整数。
“......”这些东西表明这些表格比这更容易呈现更多的信息。他们这样设置是有原因的,现在我不能改变它。

我需要写一个SQL语句从表1其中在那个特定的日志记录中值字段小于阈值字段中的表2链接的记录选择每个记录。

我对SQL很陌生,所以我知道这是一个基本问题。
如果任何人都可以告诉我这个SQL语句将如何构造,那将不胜感激。

+0

继承人一个很好的SQL教程http://www.w3schools.com/SQl/default.asp – 2009-07-17 19:41:23

回答

4
SELECT T1.* 
    FROM Table1 T1 
    JOIN Table2 T2 ON T2.ThresholdID = T1.ThresholdID 
WHERE T2.Threshold > T1.Value 
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 

A 'JOIN' 连接基于 'ON' 子句2个表(其可以是多部分,使用 'AND' 和 'OR')

如果在表2 3项共享table1的主键(一对多关联),您将在结果集中收到3行。

用于在下表中,例如:

Table 1: 
Key  Value 
1  Hi 
2  Bye 

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

此查询:

SELECT * FROM表1 JOIN表2 上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 

N请注意,JOIN只会在第二个表中存在匹配时返回结果,如果不匹配,则不会返回结果。你可以LEFT JOIN(第二个表中的所有字段都是NULL)。

连接也可以串在一起,前一个JOIN的结果用于代替原始表。

+0

你从哪里获得logentryid的JOIN?和“阈值”的where子句? – gbn 2009-07-17 19:43:08

+0

我尽可能快地输入一条匆忙的SQL行,这样我就可以做出更好的回应:关于JOIN的讨论......我认为这比仅仅给他一条鱼更有帮助。 – Jeff 2009-07-17 19:45:02

1
SELECT t1.* 
FROM dbo.Table1 t1 INNER JOIN dbo.Table2 t2 ON t1.ThresholdID = t2.ThresholdID 
WHERE t2.Threshold > t1.Value 
1

SELECT *从表1 T1加入表2 T2上(t1.thresholdId = t2.thresholdId) 其中t1.value < T2。阈;

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