Имя: Пароль:
1C
1С v8
Соединение двух таблиц
,
0 antiteror91
 
17.03.14
20:09
У меня есть 2 таблицы. Предположим в одной: Стул, Стол, Шкаф
Во Второй: стул, шкаф. В итоге мне необходимо получить Стол.Запутался что-то не могу сообразить....Сильно не ругайте за такой простой вопрос....
написал запрос:

ВЫБРАТЬ
    СписаниеБСОТовары.Номенклатура КАК Номенклатура
ПОМЕСТИТЬ ВТСписаннаяНоменклатура
ИЗ
    Документ.СписаниеБСО.Товары КАК СписаниеБСОТовары
ГДЕ
    СписаниеБСОТовары.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    СтатусыБланковСтрогойОтчетностиСрезПоследних.Бланк.Владелец КАК Номенклатура,
    СтатусыБланковСтрогойОтчетностиСрезПоследних.Бланк КАК Бланк,
    СтатусыБланковСтрогойОтчетностиСрезПоследних.Статус,
    НАЧАЛОПЕРИОДА(СтатусыБланковСтрогойОтчетностиСрезПоследних.Период, МЕСЯЦ) КАК Поле,
    СтатусыБланковСтрогойОтчетностиСрезПоследних.Бланк.Владелец
ИЗ
    РегистрСведений.СтатусыБланковСтрогойОтчетности.СрезПоследних(&ДатаОкончания, ) КАК СтатусыБланковСтрогойОтчетностиСрезПоследних
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.СписаниеБСО.Товары КАК СписаниеБСОТовары
        ПО не (СтатусыБланковСтрогойОтчетностиСрезПоследних.Бланк.Владелец = СписаниеБСОТовары.Номенклатура)
ГДЕ
    СписаниеБСОТовары.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
    И СписаниеБСОТовары.Номенклатура ЕСТЬ NULL

УПОРЯДОЧИТЬ ПО
    Номенклатура,
    Поле,
    Бланк

но этот запрос ничего не возвращает.... почему подскажите пожалуйста где напортачил....???
1 zak555
 
17.03.14
20:12
полное соединение is null
2 antiteror91
 
17.03.14
20:12
(0) P.S. временная таблица лишняя... это предыдущая попытка
3 antiteror91
 
17.03.14
20:14
(1) если вместо левого пишу полное соединение то результат тот же....
4 Кремень
 
17.03.14
20:17
эм я что то ваще запутался что тебе надо, если как в начале написал Стул, стол, Шкаф и вторая Стул, Шкаф, то тебе нужна вообще только одна таблица, так как там все данные))) просто ее выводи. Ты напиши что нужно то?
5 antiteror91
 
17.03.14
20:20
(4) мне нужно чтобы в результате выводилось только те элементы которые является уникальным из первой таблицы(те которых нету во второй)
6 antiteror91
 
17.03.14
20:21
ВЫБРАТЬ
    СтатусыБланковСтрогойОтчетностиСрезПоследних.Бланк.Владелец КАК Номенклатура,
    СтатусыБланковСтрогойОтчетностиСрезПоследних.Бланк КАК Бланк,
    СтатусыБланковСтрогойОтчетностиСрезПоследних.Статус,
    НАЧАЛОПЕРИОДА(СтатусыБланковСтрогойОтчетностиСрезПоследних.Период, МЕСЯЦ) КАК Поле,
    СтатусыБланковСтрогойОтчетностиСрезПоследних.Бланк.Владелец
ИЗ
    РегистрСведений.СтатусыБланковСтрогойОтчетности.СрезПоследних(&ДатаОкончания, ) КАК СтатусыБланковСтрогойОтчетностиСрезПоследних
        полное СОЕДИНЕНИЕ Документ.СписаниеБСО.Товары КАК СписаниеБСОТовары
        ПО  (СтатусыБланковСтрогойОтчетностиСрезПоследних.Бланк.Владелец = СписаниеБСОТовары.Номенклатура)
ГДЕ

    СписаниеБСОТовары.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
    И СписаниеБСОТовары.Номенклатура ЕСТЬ NULL

УПОРЯДОЧИТЬ ПО
    Номенклатура,
    Поле,
    Бланк
7 antiteror91
 
17.03.14
20:21
вот запрос с которым я работаю...
8 Кремень
 
17.03.14
20:27
по идее в условии тогда нужно что то типо
Выбор Когда СтатусыБланковСтрогойОтчетностиСрезПоследних.Бланк.Владелец Есть NULL ИЛИ СписаниеБСОТовары.Номенклатура ЕСТЬ NULL Тогда Истина Иначе Ложь Конец
9 Кремень
 
17.03.14
20:29
у тебя без этого "И СписаниеБСОТовары.Номенклатура ЕСТЬ NULL" возвращает что нить?
10 hhhh
 
17.03.14
20:31
(7) ну вот с этим работай

ПО  (СтатусыБланковСтрогойОтчетностиСрезПоследних.Бланк.Владелец = СписаниеБСОТовары.Номенклатура)
   И

    СписаниеБСОТовары.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
ГДЕ
СписаниеБСОТовары.Номенклатура ЕСТЬ NULL
11 antiteror91
 
17.03.14
20:33
(9) ничего не возвращает...
12 Кремень
 
17.03.14
20:35
(11)может у тебя там и данных нет? ты сначала самые первые выборки потесть, чтоб возвращали данные, потом уже соединяй.
13 antiteror91
 
17.03.14
20:39
(12) данные есть я проверил.... получается что строки которые не удовлетворяют правилу СтатусыБланковСтрогойОтчетностиСрезПоследних.Бланк.Владелец = СписаниеБСОТовары.Номенклатура он не выводит........
14 antiteror91
 
17.03.14
20:39
(13) он их исключает.......
15 bahtik
 
17.03.14
21:55
(5) Не разбирался в твоем запросе, но если тебе нужны записи из первой таблицы, которых нет во второй, то это же просто вот так:

Выбрать
    ВтораяТаблица.Поле
Поместить ВТ
Из
    ВтораяТаблица КАК ВтораяТаблица
;
////////////////////////////////////////////////
Выбрать
    ПерваяТаблица.Поле
Из
    ПерваяТаблица КАК ПерваяТаблица
Где
    Не ПерваяТаблица.Поле В (Выбрать
                                 ВТ.Поле
                             Из
                                 ВТ)
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.