|
Запрос к БД | ☑ | ||
---|---|---|---|---|
0
MaxKor
17.02.18
✎
17:59
|
Здравствуйте! Подскажите пожалуйста, как правильнее написать такой запрос. Есть ТаблицаЗначений, в ней колонки Наименование и Артикул (обе строковые). Нужно сравнить эти значения с номенклатурой в БД, также по Наименованию и Артикулу, и в выборку вывести те значения, для которых не нашлось совпадений в БД.
|
|||
1
PuhUfa
17.02.18
✎
18:01
|
(0) передай свою таблицу через параметр в запрос и соединением сравни
|
|||
2
MaxKor
17.02.18
✎
18:16
|
а как конкретно сравнить? в базе 250 тыс элементов, у меня виснет пк и выдает ошибку о нехватке памяти
|
|||
3
nordbox
17.02.18
✎
18:20
|
Тут вариантов много разных )))
Как делаешь? в какой момент виснет, что читаешь из справочника? |
|||
4
nordbox
17.02.18
✎
18:22
|
Кроме того
>>и в выборку вывести те значения, для которых не нашлось совпадений в БД. Пусть у тебя в ТЗ 10 тыс элементов, значит ты в выборку собираешь засунуть 240 тыс элементов/ссылок Задачу измени |
|||
5
Рэйв
17.02.18
✎
18:34
|
(0)Почитай про типизацию колонок тз, про запихание ее в запрос.Про типы соединений в запросе. Ну и хватит навреное, чтобы посчитать себя ущербным в открытии сабжа.
|
|||
6
Георгиос
17.02.18
✎
18:45
|
(0) https://upload.wikimedia.org/wikipedia/commons/thumb/9/9d/SQL_Joins.svg/1024px-SQL_Joins.svg.png
Для SQL создали картинку, где понятно как делать разные пересечения таблиц. На 1С аналогично, но по-русски ВЫБРАТЬ вместо SELECT и т.д. |
|||
7
nordbox
17.02.18
✎
18:52
|
(6) Это все понятно, у (0) подход не правильный
|
|||
8
Георгиос
17.02.18
✎
21:52
|
(2) Поскольку у тебя выдает ошибку, значит что-то ты написал.
В запросе можно ограничить число выводимых строк. Синтаксис для 1С не подскажу, а в SQL "SELECT TOP 1000 дальше текст запроса продолжается" - первые 1000 строк результата. Или сделать ограничение по номеру или наименованию. Не все проверять, а что-то явное, потом это ограничение в запросе убрать. Так быстрее будет работать, хватит памяти и можно разобраться что к чему. Ограничь число выводимых строк в своем запросе, посмотри результат, пойми, что не так. Возможно идет связь все ко всем, а это много при 250 тыс. записей. Научиться писать запросы вполне возможно. |
|||
9
mikecool
17.02.18
✎
22:14
|
(0) при сравнении используй выразить(АртикулИзТЗ как строка(ДлинаАртикулаВКонфигурации)) - так будет попадать
|
|||
10
rsv
17.02.18
✎
22:36
|
(0)
На полное совпадение Артикула И Наименование Выбрать Различные ТЗ.Артикул, ТЗ.Наименование, Из ТЗ LEFT JOIN Номенклатура ON ТЗ.Артикул = Номенклатура.Артикул И ТЗ.Наименование = Номенклатура.Наименование Где Номенклатура.Артикул IS NULL |
|||
11
tndr
17.02.18
✎
22:45
|
(0) Поищи в книге знаний, Осипов оченна неплохую функцию сравнения таблиц значений написал.
|
|||
12
rsv
17.02.18
✎
22:51
|
+(10) а еще лучше почитать ANSI SQL. И всегда рассматривать ТЗ как обычную таблицу и джойнить ее с другой (другими) по простым правилам .
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |