|
Вхождение таблицы в другую таблицу в запросе
| ☑ |
0
kolts23381
28.02.17
✎
23:57
|
Есть таблица
н1, х1, к1
н2, х2, к2
н3, х3, к3
И есть таблица
н1, х1, к1
н2, х2, к2
н3, х3, к3
н4, х4, к4
н5, х5, к5
н6, х6, к6
Как проверить что во второй таблице есть соответствующая строка (по условию )для каждой строки из первой таблицы. Строки сгруппированы и повторяющихся нет.
В цикле могу сделать, но как это сделать в запросе.
|
|
1
DrShad
01.03.17
✎
00:02
|
собрать ключи и сравнить
|
|
2
kolts23381
01.03.17
✎
00:06
|
Условие равенства строк
т1.н = т2.н и т1.х = т2.х и т1.к >= т2.к
|
|
3
Fram
01.03.17
✎
00:08
|
(2) в чем проблема то?
|
|
4
Fram
01.03.17
✎
00:09
|
левое соединие и проверка на нулл
|
|
5
Неверный Параметр И
01.03.17
✎
00:09
|
Если в первая лефтджоин вторая есть хоть один нулл от второй, то не для всех.
|
|
6
kolts23381
01.03.17
✎
00:18
|
По идее так
Select COUNT(1) FROM Т2
LEFT JOIN Т1
ON Т1.Н = Т2.Н
AND Т1.Х = Т2.Х
AND Т1.К >= Т2.К
WHERE Т1.Н IS NULL
Если количество равно нулю, то все нормально. Сейчас буду проверять
|
|
7
Fram
01.03.17
✎
00:20
|
(6) ну если ты первую и вторую таблицы местами не перепутал, то сработает
|
|
8
kolts23381
01.03.17
✎
00:24
|
WHERE Т1.Н IS NULL оставляет только те записи из первой таблицы которых нет во второй. Если таких записей нет то первая таблица входит во вторую
|
|
9
Неверный Параметр И
01.03.17
✎
00:40
|
Селект топ 1 1 и проверка на пустоту запроса выгоднее
|
|
10
Zhuravlik
01.03.17
✎
00:46
|
Добавляем поле "Счетчик" - для первой таблицы заполняем как 1, для второй -1. Потом объединение по ключевым полям + свертка, и исключение нулевых. То что осталось - разница. Там где счетчик положительный - для первой таблице, иначе - для второй.
Соотв. по оставшимся записям можно судить было ли вхождение.
|
|
11
kolts23381
01.03.17
✎
00:56
|
(10) Интересный способ. Проверю если первый не получится.
|
|
12
kolts23381
01.03.17
✎
01:07
|
(7) Да перепутал таблицы. Не так соображаю уже как днем.
|
|