|   |   | 
| 
 | Запрос к БД | ☑ | ||
|---|---|---|---|---|
| 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.  И всегда рассматривать  ТЗ  как обычную таблицу  и джойнить ее с  другой (другими) по простым правилам .     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |