Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   Запрос : Отобрать значения исключив выбранное множество (http://forums.kuban.ru/f1040/zapros_otobrat-_znacheniya_isklyuchiv_vybrannoe_mnozhestvo-5310196.html)

bvb 23.01.2014 11:14

Запрос : Отобрать значения исключив выбранное множество
 
Помогите туплю :
Нужно отобрать номенклатуры у которых установлен признак "ВестиУчетПоХарактеристикам" а самих характеристик нет.
Я как понимаю нужно отобрать характеристики в отдельной таблице
и затем взять номенклатуру за иключением владельцев данной таблицы типа того :

Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Номенклатура,
| Характеристики.Количество КАК Количество
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
| ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
| ХарактеристикиНоменклатуры.Владелец КАК Владелец,
| СУММА(1) КАК Количество
| ИЗ
| Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
|
| СГРУППИРОВАТЬ ПО
| ХарактеристикиНоменклатуры.Владелец) КАК Характеристики
| ПО Номенклатура.Ссылка <> Характеристики.Владелец
|ГДЕ
| Номенклатура.ВестиУчетПоХарактеристикам
|
|СГРУППИРОВАТЬ ПО
| Номенклатура.Ссылка,
| Характеристики.Количество";

bma1 23.01.2014 11:52

ВЫБРАТЬ
Подзапрос.Ссылка КАК Номенклатура
ИЗ (
ВЫБРАТЬ
СпрНоменклатура.Ссылка КАК Номенклатура,
Характеристики.Характеристика
ИЗ
Справочник.Номенклатура КАК СпрНоменклатура
ЛЕВОЕ СОЕДИНЕНИЕ
Справочник.ХарактеристикиНоменклатуры КАК Характеристики
ПО СпрНоменклатура.Ссылка = Характеристики.Владелец
ГДЕ
СпрНоменклатура.ВестиУчетПоХарактеристикам = ИСТИНА) КАК Подзапрос
ГДЕ Подзапрос.Характеристика ЕСТЬ NULL

Я бы делал так, или подзапрос вынес в первый запрос пакета.

bma1 23.01.2014 11:55

За такое "ПО Номенклатура.Ссылка <> Характеристики.Владелец"
стоило бы забивать желто-красными книжками. насмерть. В темном переулке. Это каких же размеров промежуточная таблица будет?

Uho 23.01.2014 11:57

справочник ХарактеристикиНоменкатуры подчинен Номенклатуре?

тогда так:

ВЫБРАТЬ
Номенклатура.Ссылка
ИЗ
Справочник.Номенклатура КАК Номенклатура
ГДЕ
Номенклатура.ВестиУчетПоХарактеристикам И
НЕ Номенклатура.Ссылка В
(ВЫБРАТЬ РАЗЛИЧНЫЕ
Справочник.ХарактеристикиНоменклатуры.Владелец
ИЗ
Справочник.ХарактеристикиНоменклатуры)

bvb 23.01.2014 12:01

(2) Я понимаю что это не верно. Выложил ТАКОЙ текст запроса просто чтобы яснее обозначить проболему

bvb 23.01.2014 12:09

(3) Спасибо . Красиво. Не знал что в условии можно проверить на вхождение в таблицу из подзапроса.

В мемориз.

bma1 23.01.2014 12:27

[quote=bvb;33831154]НЕ Номенклатура.Ссылка В[/quote]
Я как-то опасаюсь использовать оператор вхождения на больших массивах данных. с этим оператором планы выполнения запросов иногда бывают совершенно непредсказуемые. меня пару раз в сильное изумление вгоняли.

Uho 23.01.2014 12:30

[quote=bma1;33831677]Я как-то опасаюсь использовать оператор вхождения на больших массивах данных[/quote]
это какой должен быть объем массива данных? Несколько миллилонов отработаются за секунду

bma1 23.01.2014 13:15

[quote=Uho;33831747]это какой должен быть объем массива данных? Несколько миллилонов отработаются за секунду [/quote]
ага, когда план запросов начинает их в цикле гонять с проверкой... меня тоже удивило доневероятности.


Текущее время: 17:52. Часовой пояс GMT +3.