![]() |
|
запрос на сравнение номенклатуры | ☑ | ||
---|---|---|---|---|
0
Csar
22.07.14
✎
13:59
|
Всем привет!
Сижу мучаюсь вопросом как сравнить две таблицы. Пояснение: Есть таблица номенклатуры, кодов ее, инвентарников и серийников, которые прочитаны из внешнего файла. Надо эту таблицу сравнить сначала по всем четырем реквизитам с данными справочника Номенклатуры, потом по отдельным реквизитам. Есть ли соображения как это сделать одним запросом, что бы побыстрее? Пока только крутится мысль загнать прочтенные данные в ТЗ и их загнать в запрос. А вот как потом сравнивать поля этой таблицы с данными конкретной номенклатуры ума не приложу. Или же на крайняк тупо построчно без запросов сравнивать - искать номенклатуру по коду и потом все остальное, или по наименованию и т.д.? |
|||
1
_KaA
22.07.14
✎
14:05
|
Считываешь данные (вопрос преобразования типов при считывании не освещаем), далее помещаем их во временную таблицу.
Если данных много еще не плохо бы проиндексировать поля. Потом соединениями таблиц получаешь все необходимые выборки: 1. Где нет совпадений по всем полям 2. Где нет совпадений по первому полю 3. Где нет совпадений по второму полю и т.д. Вывод результатов запроса делаешь как тебе необходимо. SP Если я не правильно понял вопрос, сорри. |
|||
2
_KaA
22.07.14
✎
14:06
|
(1)
Под соединение таблиц понимать соединение таблицы номенклатуры в запросе с временной таблицей. |
|||
3
Csar
22.07.14
✎
14:19
|
(2) Спасибо за мысль! Попробую
|
|||
4
_KaA
22.07.14
✎
14:27
|
(3)
Только очень внимательно с типами. Что бы не сравнивали строку "1111" с числом 1111! |
|||
5
Csar
22.07.14
✎
15:20
|
(4) Спасибо
|
|||
6
МихаилМ
22.07.14
✎
17:06
|
если хотите "быстрее"
то быстрее сравнить в скд 2 тз, чем пересылать данные в субд , сравнивать и возвращать результат сравнения. но программировать дольше. |
|||
7
Лефмихалыч
22.07.14
✎
17:15
|
ВЫБОР
КОГДА т1.п1 = Т1.п1 и т1.п2 = Т1.п2 и т1.п3 = Т1.п3 Тогда 4 КОГДА т1.п1 = Т1.п1 и т1.п2 = Т1.п2 Тогда 3 КОГДА т1.п1 = Т1.п1 Тогда 2 КОГДА т1.п2 = Т1.п2 Тогда 1 КОГДА т1.п3 = Т1.п3 Тогда 0 Конец потом какой-нить круть-верть с максимум-минимум или что-то вроде этого |
|||
8
Лефмихалыч
22.07.14
✎
17:17
|
еще можно кагбэ сделать кагбэ кластерный типа почти что индекс - добавить в таблицы поля, в которых значения полей поиска будут спаяны в одну строку и по ним соединять, но потом все равно какой-то круть-верть с максимомумом-минимумом делать, ибо поиск не ч0ткий
|
|||
9
shuhard
22.07.14
✎
17:23
|
(0) если все коды текстовые, то самый быстрый вариант - склеить их в одну строку и сравнивать
|
|||
10
Csar
23.07.14
✎
15:15
|
Сделал запрос типа:
"ВЫБРАТЬ
При этом в ТЗ все текстовое однозначно. При обработке запроса вылезает сообщение: {Форма.Форма.Форма(454)}: Ошибка при вызове метода контекста (Выполнить) Результат = Запрос.Выполнить().Выбрать(); по причине: {(2, 2)}: Тип не может быть выбран в запросе <<?>>ТЗ.Код1с7, Пробовал и через ВЫРАЗИТЬ - пишет ошибку, что несовместимые типы с ВЫРАЗИТЬ. PS ТЗ заполняется так: Пока НЕ ПустаяСтрока(ExcelЛист.Cells(Строка, 1).Value) Цикл
|
|||
11
Csar
23.07.14
✎
15:42
|
*решил проблему описав тип колонок ТЗ как тут v8: Тип не может быть выбран в запросе?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |