Имя: Пароль:
1C
 
Вхождение таблицы в другую таблицу в запросе
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) Да перепутал таблицы. Не так соображаю уже как днем.
Закон Брукера: Даже маленькая практика стоит большой теории.