|
Торможу с запросом. | ☑ | ||
---|---|---|---|---|
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) Ты разобрался с запросом? :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |