2009-07-17 72 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