Как написать SQL-запрос с условием, включающим вторую таблицу? - PullRequest
1 голос
/ 17 июля 2009

Table1
...
LogEntryID *PrimaryKey*
Значение
ThresholdID - - - Ссылка на соответствующий порог, применяемый к этой записи журнала.
...

Table2
...
ThresholdID *PrimaryKey*
Порог
...

Все поля являются целыми числами.
"..." вещицы показывают, что эти таблицы содержат гораздо больше информации, чем просто эта. Они настроены таким образом по причине, и я не могу изменить это в данный момент.

Мне нужно написать оператор SQL, чтобы выбрать каждую запись из Table1 , где поле Значение в этой конкретной записи журнала меньше, чем поле Порог в связанной записи Table2 .

Я новичок в SQL, поэтому знаю, что это основной вопрос.
Если кто-нибудь сможет показать мне, как будет структурирован этот оператор SQL, он будет очень признателен.

Ответы [ 5 ]

4 голосов
/ 17 июля 2009
SELECT T1.*
  FROM Table1 T1
  JOIN Table2 T2 ON T2.ThresholdID = T1.ThresholdID
 WHERE T2.Threshold > T1.Value
1 голос
/ 17 июля 2009
SELECT t1.LogEntryID, t1.Value, t1.ThresholdID
FROM Table1 t1 
INNER JOIN Table2 t2 ON t1.ThresholdID = t2.ThresholdID 
WHERE t1.Value < t2.threshold
1 голос
/ 17 июля 2009

ВЫБРАТЬ * из таблицы 1 t1 присоединиться к таблице 2 t2 on (t1.thresholdId = t2.thresholdId) где t1.value

1 голос
/ 17 июля 2009
SELECT t1.*
FROM dbo.Table1 t1 INNER JOIN dbo.Table2 t2 ON t1.ThresholdID = t2.ThresholdID
WHERE t2.Threshold > t1.Value
1 голос
/ 17 июля 2009
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» соединяет 2 таблицы на основе предложения «ON» (которое может быть составным, используя «AND» и «OR»)

Если у вас есть 3 записи в таблице 2, которые совместно используют первичный ключ 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 Table1 ПРИСОЕДИНИТЬСЯ Table2 на 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-й таблице, и не будет возвращать результат, если совпадения нет. Для этого вы можете СЛЕДУТЬ ПРИСОЕДИНЯТЬСЯ (все поля из второй таблицы будут НЕДЕЙСТВИТЕЛЬНЫМИ).

СОЕДИНЕНИЯ также могут быть связаны вместе, результат предыдущего СОЕДИНЕНИЯ используется вместо исходной таблицы.

...