Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Запрос к БД

Запрос к БД
Я
   MaxKor
 
17.02.18 - 17:59
Здравствуйте! Подскажите пожалуйста, как правильнее написать такой запрос. Есть ТаблицаЗначений, в ней колонки Наименование и Артикул (обе строковые). Нужно сравнить эти значения с номенклатурой в БД, также по Наименованию и Артикулу, и в выборку вывести те значения, для которых не нашлось совпадений в БД.
 
 
   PuhUfa
 
1 - 17.02.18 - 18:01
(0) передай свою таблицу через параметр в запрос и соединением сравни
   MaxKor
 
2 - 17.02.18 - 18:16
а как конкретно сравнить? в базе 250 тыс элементов, у меня виснет пк и выдает ошибку о нехватке памяти
   nordbox
 
3 - 17.02.18 - 18:20
Тут вариантов много разных )))
Как делаешь? в какой момент виснет, что читаешь из справочника?
   nordbox
 
4 - 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 и т.д.
   nordbox
 
7 - 17.02.18 - 18:52
(6) Это все понятно, у (0) подход не правильный
   Георгиос
 
8 - 17.02.18 - 21:52
(2) Поскольку у тебя выдает ошибку, значит что-то ты написал.
В запросе можно ограничить число выводимых строк.
Синтаксис для 1С не подскажу, а в SQL "SELECT TOP 1000 дальше текст запроса продолжается" - первые 1000 строк результата.
Или сделать ограничение по номеру или наименованию. Не все проверять, а что-то явное, потом это ограничение в запросе убрать.
Так быстрее будет работать, хватит памяти и можно разобраться что к чему.
Ограничь число выводимых строк в своем запросе, посмотри результат, пойми, что не так. Возможно идет связь все ко всем, а это много при 250 тыс. записей.

Научиться писать запросы вполне возможно.
   mikecool
 
9 - 17.02.18 - 22:14
(0) при сравнении используй выразить(АртикулИзТЗ как строка(ДлинаАртикулаВКонфигурации)) - так будет попадать
   rsv
 
10 - 17.02.18 - 22:36
(0)

На полное совпадение Артикула И Наименование

Выбрать
Различные
ТЗ.Артикул,
ТЗ.Наименование,
Из
ТЗ
LEFT JOIN
Номенклатура
ON
ТЗ.Артикул = Номенклатура.Артикул  И 
ТЗ.Наименование = Номенклатура.Наименование
Где
Номенклатура.Артикул IS NULL
 
 Рекламное место пустует
   tndr
 
11 - 17.02.18 - 22:45
(0) Поищи в книге знаний, Осипов оченна неплохую функцию сравнения таблиц значений написал.
   rsv
 
12 - 17.02.18 - 22:51
+(10) а еще лучше почитать ANSI SQL.  И всегда рассматривать  ТЗ  как обычную таблицу  и джойнить ее с  другой (другими) по простым правилам .

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует