![]() |
|
Сравнение табличных частей в запросе | ☑ | ||
---|---|---|---|---|
0
Игорь_МММ
29.06.16
✎
16:41
|
Есть такая задача: сгруппировать элементы справочника по результату сравнения таб.частей. Результат сравнения ИСТИНА если в обоих ТЧ одинаковый состав номенклатуры. Есть какие-нибудь идеи как это можно реализовать?
|
|||
1
Timon1405
29.06.16
✎
16:47
|
||||
2
Nuobu
29.06.16
✎
16:50
|
Я один не вижу связи между (1) и тем, что хочет ТС?
|
|||
3
Beretta
29.06.16
✎
16:50
|
(2) Нет =)
|
|||
4
Euguln
29.06.16
✎
16:52
|
(2) Слова "Запрос" и "номенклатура", ну и все.
|
|||
5
Nuobu
29.06.16
✎
16:58
|
(0) По делу: жмакни на букву "Я" возле называния темы.
|
|||
6
Игорь_МММ
29.06.16
✎
17:01
|
(5) искал , конечно, но нужного не нашел. По количеству строк сравнивают, еще по чему - я так понял просто смотрят изменяласт ТЧ или нет. У меня другое
|
|||
7
Nuobu
29.06.16
✎
17:02
|
(6) А что у тебя?
|
|||
8
ovrfox
29.06.16
✎
17:02
|
Результат сравнения - это булево или хешфункция или третье?
В ЛЮБОМ случае, если поле "РезультатСраненияТЧ" содержит результат сравнения таб.частей, то нужно просто сгруппировать результат по данному полю |
|||
9
Зая Бусечка
29.06.16
✎
17:03
|
Полное соедиение по ключевым полям и проверять на NULL
|
|||
10
FIXXXL
29.06.16
✎
17:05
|
возьми обе ТЧ, сгруппируй каждую по Номенклатуре
добавь поле для анализа, "1" к примеру сгруппируй две ТЧ, просуммируй "1" если есть строки <>2 - есть расхождения по номенклатуре |
|||
11
ovrfox
29.06.16
✎
17:06
|
(8) Понял что булево
Не понял что с чем сравнивать. Список элементов справочника со вторым списко элементов (т.е. все со всеми) или есть всего два элемента? Тогда что группировать? |
|||
12
Nuobu
29.06.16
✎
17:08
|
(11) + (8) ты сам с собой разговариваешь?
|
|||
13
Игорь_МММ
29.06.16
✎
17:08
|
(8) не Булево , точно , в (0) неверно написал, по полю сравнению нужно группировать. То есть смысл в том чтобы выцепить группы элементов с одинаковой номенклатурой в ТЧ. (11) все со всеми. Как бы весь справочник пересортировать
|
|||
14
Игорь_МММ
29.06.16
✎
17:11
|
Не силен в хеш-функциях, но сейчас почитал - что-то похожее. Правильно ли я понимаю, что хешированием ТЧ можно получить некий индентификатор этой ТЧ, потом сравнивать по этому индентификатору?
|
|||
15
ovrfox
29.06.16
✎
17:18
|
Выбрать
Ссылка, Номенклатура, 1 КАК фНаличия Поместить ПредВыборка Из Справочник ; Выбрать С11.Ссылка, ВнЗапрс.Ссылка Из (Выбрать С1.Ссылка , Сумма(фНаличие) как фНаличие ИЗ ПредВыборка Сгруппировать по С1.Ссылка ) как С11 Внутреннее соединение ( Выбрать С2.Ссылка, C3.Ссылка как Похожий, Сумма(С2.фНаличия) Как фНаличия ИЗ ПредВыборка С2 Внутреннее Соединение ПредВыборка С3 где С2.Ссылка <> С3.Ссылка и С2.Номенклатура = С3.Номенклатура Сгрупиировать по С2.Ссылка, С3.Ссылка) КАК ВнЗапрос Где С11.Ссылка = ВнЗапрос.Ссылка и С11.фНаличие = ВнЗапрос.Фналичие |
|||
16
ovrfox
29.06.16
✎
17:21
|
(15) Сорри , в последней строки вместо "где" нужно "по"
Результат запроса - все схожие пары, причем как Вариант Элем1, Элем2, так и вариант Элем2,Элем1. |
|||
17
Игорь_МММ
29.06.16
✎
17:24
|
(15) (16) спасибо , сшас буду курить сие ..
|
|||
18
ovrfox
29.06.16
✎
17:27
|
(14) Неправильно понимаешь.
Если (и только тогда) ХЕШ функция имеет нормальное распределение пд диапазону 1-1 миллион в целых числах, то с вероятностью 1 к миллиону в случае совпадения хеш функции парамтеры хеш функции НЕ совпадают Т.е. остается случай случайного срабатывания хеш функции. Но для твоего случая наверное подходит |
|||
19
Игорь_МММ
29.06.16
✎
17:36
|
(15) что логика сего ускользает от меня (
|
|||
20
Игорь_МММ
29.06.16
✎
17:37
|
(15) в чем смысл?
|
|||
21
ovrfox
29.06.16
✎
17:39
|
(15) Я тут еще подумал, предположительно если соединение второй таблице с третье выполнять не по условию "<>", а по условию "<", то мы отбросим половину совпадений.
Логика простая Сначала выбираем всю нгменклтуру однократно (кстати, первый запрос нужно сгруппировать по номенклатуре и ссылке) В с11 это у нас количество строк номенгклатуры В ПредВыборке - количество совпавших строк номенклатуры в паре. Соединение с11 и предвыборки - проверка что совпали все строки, а не некоторые. |
|||
22
ovrfox
29.06.16
✎
17:42
|
И в первой строке второго запроса вместо
Выбрать С11.Ссылка, ВнЗапрс.Ссылка Должно быть : Выбрать С11.Ссылка, ВнЗапрс.Похожий |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |