Имя: Пароль:
1C
1С v8
Торможу с запросом.
,
0 ReaLg
 
29.08.13
20:43
Есть 2 временные таблички:
а 1    а 1
а 2    а 3
а 3    а 7
а 4    б 1
б 1    б 8
б 5    б 9

Как их соединить?
Результат должен быть таким:
а 1 1
а 3 3
а 2 null
а 4 null
а null 7
б 1 1
б 5 null
б 6 null
б null 8
б null 9
?
1 ReaLg
 
29.08.13
20:47
Есть 2 таблицы. Колонки: НоменклатураСсылка, ХарактеристикаНаименование. Дубли в таблицах возможны, но убираются группировкой на этапе формирования вложенных запросов. Как 1 запросом показать совпадения и различия?
2 ReaLg
 
29.08.13
20:50
В результате строка б 6 null лишняя, нет такого :)
3 Живой Ископаемый
 
29.08.13
20:56
в 5-й строке запроса ошибка
4 ReaLg
 
29.08.13
21:00
(3) Да нет запроса под рукой. Дома уже спать мешает осознание собственной тупости, не приходит в голову по каким условиям соединять.
5 ReaLg
 
29.08.13
21:09
(3) Сейчас набросаю ход мысли:
Запрос = Новый Запрос("ВЫБРАТЬ
                          |    ВТ1.ХарактеристикаНоменклатурыНаименование,
                          |    ВТ2.ХарактеристикаНоменклатурыНаименование КАК ХарактеристикаНоменклатурыНаименование1,
                          |    ЕСТЬNULL(ВТ1.НоменклатураСсылка, ВТ2.НоменклаутраСсылка) КАК НоменклатураСсылка
                          |ИЗ
                          |    ВТ1 КАК ВТ1
                          |        ПОЛНОЕ СОЕДИНЕНИЕ ВТ2 КАК ВТ2
                          |        ПО ВТ1.НоменклатураСсылка = ВТ2.НоменклаутраСсылка
                          |            И (ВТ2.ХарактеристикаНоменклатурыНаименование = ВТ1.ХарактеристикаНоменклатурыНаименование)");

Так не подходит, потому что попадет, например, а 1 7
6 ReaLg
 
29.08.13
21:10
Запрос = Новый Запрос("ВЫБРАТЬ
                          |    ВТ1.ХарактеристикаНоменклатурыНаименование,
                          |    ВТ2.ХарактеристикаНоменклатурыНаименование КАК ХарактеристикаНоменклатурыНаименование1,
                          |    ЕСТЬNULL(ВТ1.НоменклатураСсылка, ВТ2.НоменклаутраСсылка) КАК НоменклатураСсылка
                          |ИЗ
                          |    ВТ1 КАК ВТ1
                          |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ2 КАК ВТ2
                          |        ПО ВТ1.НоменклатураСсылка = ВТ2.НоменклаутраСсылка
                          |            И (ВТ2.ХарактеристикаНоменклатурыНаименование = ВТ1.ХарактеристикаНоменклатурыНаименование)");

Так не попадут все расхождения.
7 ReaLg
 
29.08.13
21:14
Есть мысль в ПО использовать подзапрос наподобие ПО (НС1 = НС2 И ХН1 = ХН2) ИЛИ(НС1 = НС2 И НЕ(ХН в ВЫБРАТЬ(че-то там)))
8 ReaLg
 
29.08.13
21:16
(7) Но, я хз можно ли так, и даже если можно, то не равнозначно ли это запросу в цикле?
9 ReaLg
 
29.08.13
21:24
Я бы поставил дайм, что правильный ответ - внутреннее соединение + 2 объединения по условиям с подзапросом, исопльзующим данные только текущей строки. Но как быстро это будет работать и будет ли вообще - хз :)
10 masenshi
 
30.08.13
07:47
(1)
(5)
Используй полное соединение, а если что-то лишнее вылазит, то добавь соответсвующее условие:
ГДЕ `ЛюбоеПолеКакоеЯХочу` ЕСТЬ НЕ NULL
11 sapphire
 
30.08.13
23:49
//а 1    а 1
//а 2    а 3
//а 3    а 7
//а 4    б 1
//б 1    б 8
//б 5    б 9

SELECT "а" Поле1,1 Поле2 INTO А UNION ALL
SELECT "а" Поле1,2 Поле2        UNION ALL
SELECT "а" Поле1,3 Поле2        UNION ALL
SELECT "а" Поле1,4 Поле2        UNION ALL
SELECT "б" Поле1,1 Поле2        UNION ALL
SELECT "б" Поле1,5 Поле2        ;

SELECT "а" Поле1,1 Поле2 INTO Б UNION ALL
SELECT "а" Поле1,3 Поле2        UNION ALL
SELECT "а" Поле1,7 Поле2        UNION ALL
SELECT "б" Поле1,1 Поле2        UNION ALL
SELECT "б" Поле1,8 Поле2        UNION ALL
SELECT "б" Поле1,9 Поле2        ;

SELECT
     Объ.Поле1
//    ,Объ.Поле2
    ,А.Поле2 А
    ,Б.Поле2 Б
FROM
    (SELECT Поле1,Поле2 FROM А UNION SELECT Поле1,Поле2 FROM Б ) Объ
    
LEFT JOIN А
ON А.Поле1= Объ.Поле1 AND А.Поле2= Объ.Поле2
    
LEFT JOIN Б
ON Б.Поле1= Объ.Поле1 AND Б.Поле2= Объ.Поле2
12 sapphire
 
31.08.13
00:02
а    1    1
а    2    Null
а    3    3
а    4    Null
а    Null    7
б    1    1
б    5    Null
б    Null    8
б    Null    9
13 sapphire
 
31.08.13
00:03
Я не понимаю Вань, что именно тебя смущает
14 sapphire
 
02.09.13
12:08
(0) Ты разобрался с запросом? :)