|
Объединение двух строк в одну | ☑ | ||
---|---|---|---|---|
0
alexsandrinia
24.08.11
✎
09:05
|
Программно создаю 2 запроса, у них есть один общий столбец. Как можно вывести 2 строки (по каждой из запросов)в одну, у которых имеется общий столбец?
|
|||
1
Wobland
24.08.11
✎
09:06
|
строки в запросах не складываются. всё остальное не понял. что значит "программно", что такое "общий", "столбец" уж ладно ;) и т.д.
|
|||
2
alexsandrinia
24.08.11
✎
09:08
|
(1) например, есть 2 таблицы
A B B F C D G K нужно, чтоб получилось A F |
|||
3
ДенисЧ
24.08.11
✎
09:09
|
Таки соединение...
|
|||
4
Дикообразко
24.08.11
✎
09:09
|
сгруппировать/свернуть ?
|
|||
5
alexsandrinia
24.08.11
✎
09:11
|
ЗапросНУ = Новый Запрос;
ЗапросНУ.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | СоответствиеСчетовБУиНУ.СчетБУ КАК СчетБУ_НУ, | СоответствиеСчетовБУиНУ.СчетНУ КАК СчетНУ_НУ, | НУ.Организация КАК ОрганизацияНУ, | НУ.СчетДтНУ КАК СчетДтНУ, | НУ.СчетКтНУ КАК СчетКтНУ, | НУ.ВидУчетаДтНУ КАК ВидУчетаДтНУ, | НУ.ВидУчетаКтНУ КАК ВидУчетаКтНУ, | НУ.СуммаНУ |ИЗ | (ВЫБРАТЬ | ОтражениеЗарплатыВРеглУчете.Организация.Ссылка КАК Организация, | Налоговый.СчетДт КАК СчетДтНУ, | Налоговый.СчетКт КАК СчетКтНУ, | Налоговый.ВидУчетаДт КАК ВидУчетаДтНУ, | Налоговый.ВидУчетаКт КАК ВидУчетаКтНУ, | СУММА(Налоговый.Сумма) КАК СуммаНУ | ИЗ | РегистрБухгалтерии.Налоговый КАК Налоговый | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОтражениеЗарплатыВРеглУчете КАК ОтражениеЗарплатыВРеглУчете | ПО Налоговый.Регистратор = ОтражениеЗарплатыВРеглУчете.Ссылка | ГДЕ | ОтражениеЗарплатыВРеглУчете.Проведен = ИСТИНА | И ОтражениеЗарплатыВРеглУчете.ПериодРегистрации МЕЖДУ &НачалоПериода И &КонецПериода | И Налоговый.Период МЕЖДУ &НачалоПериода И &КонецПериода | | СГРУППИРОВАТЬ ПО | ОтражениеЗарплатыВРеглУчете.Организация.Ссылка, | Налоговый.ВидУчетаКт, | Налоговый.СчетКт, | Налоговый.ВидУчетаДт, | Налоговый.СчетДт) КАК НУ | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СоответствиеСчетовБУиНУ КАК СоответствиеСчетовБУиНУ | ПО НУ.СчетДтНУ = СоответствиеСчетовБУиНУ.СчетНУ | |УПОРЯДОЧИТЬ ПО | ОрганизацияНУ, | СчетДтНУ.Код, | ВидУчетаДтНУ, | СчетКтНУ.Код, | ВидУчетаКтНУ"; ЗапросБУ = Новый Запрос; ЗапросБУ.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | СоответствиеСчетовБУиНУ.СчетБУ КАК СчетБУ_БУ, | СоответствиеСчетовБУиНУ.СчетНУ КАК СчетНУ_БУ, | БУ.СчетДтБУ КАК СчетДтБУ, | БУ.СчетКтБУ КАК СчетКтБУ, | БУ.СуммаБУ КАК СуммаБУ, | БУ.Организация КАК ОрганизацияБУ |ИЗ | (ВЫБРАТЬ | Хозрасчетный.СчетДт КАК СчетДтБУ, | Хозрасчетный.СчетКт КАК СчетКтБУ, | СУММА(Хозрасчетный.Сумма) КАК СуммаБУ, | ОтражениеЗарплатыВРеглУчете.Организация.Ссылка КАК Организация | ИЗ | РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОтражениеЗарплатыВРеглУчете КАК ОтражениеЗарплатыВРеглУчете | ПО Хозрасчетный.Регистратор = ОтражениеЗарплатыВРеглУчете.Ссылка | ГДЕ | ОтражениеЗарплатыВРеглУчете.Проведен = ИСТИНА | И ОтражениеЗарплатыВРеглУчете.ПериодРегистрации МЕЖДУ &НачалоПериода И &КонецПериода | И Хозрасчетный.Период МЕЖДУ &НачалоПериода И &КонецПериода | | СГРУППИРОВАТЬ ПО | Хозрасчетный.СчетКт, | ОтражениеЗарплатыВРеглУчете.Организация.Ссылка, | Хозрасчетный.СчетДт) КАК БУ | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СоответствиеСчетовБУиНУ КАК СоответствиеСчетовБУиНУ | ПО БУ.СчетДтБУ = СоответствиеСчетовБУиНУ.СчетБУ | |УПОРЯДОЧИТЬ ПО | ОрганизацияБУ, | БУ.СчетДтБУ.Код, | БУ.СчетКтБУ.Код"; вот код |
|||
6
ЛЮС
24.08.11
✎
09:17
|
Формируешь ОДИН запрос из двух подзапросов, они у тебя уже есть. Делаешь внутреннее соединение (по организации и СчетНУ_БУ), и получаешь нужные поля из общего запроса.
|
|||
7
alexsandrinia
24.08.11
✎
09:18
|
сейчас попробую, заранее спасибо!
|
|||
8
alexsandrinia
24.08.11
✎
09:25
|
(6) Подзапросы сделать как виртуальные таблицы?
|
|||
9
ЛЮС
24.08.11
✎
09:29
|
(8) Можно но не нужно.
В приведенных примерах (...) КАК БУ - это и есть подзапрос. Дальше по аналогии. |
|||
10
alexsandrinia
24.08.11
✎
09:30
|
(9) как вложенные запросы делать,значит?
|
|||
11
alexsandrinia
24.08.11
✎
09:43
|
(8) почему нельзя как виртуальные таблицы делать эти 2 подзапроса?
|
|||
12
ЛЮС
24.08.11
✎
09:48
|
(11) никто не говорит, что нельзя. Но целесообразность? Может эти данные из ВТ будут где-то еще использоваться?
|
|||
13
alexsandrinia
24.08.11
✎
09:53
|
(12) нет, нигде не будут больше использоваться. сделал, но почему то получается вот как:
08.03 69.11 08.03 69.11 08.03 69.11 08.03 70 08.03 70 08.03 69.11 08.03 70 08.03 70 вместо этого: 08.03 69.11 08.03 69.11 08.03 70 08.03 70 и так по оставшимся счетам... |
|||
14
kuza2000
24.08.11
✎
09:59
|
Получилось пересечение, где-то условие соединения подзапросов не указано :)
|
|||
15
ЛЮС
24.08.11
✎
10:00
|
Значит надо еще добавлять условий при соединении на счета.
|
|||
16
kuza2000
24.08.11
✎
10:01
|
А вообще, подзапросы сложные, лучше результат сохранить во временные таблицы, и объединять уже их. Код будет проще. И вероятность сюрпризов с производительностью впоследствии меньше.
|
|||
17
ЛЮС
24.08.11
✎
10:17
|
(16) При разбиении на ВТ Код становится проще и структурированнее, но при этом больше и сложнее для восприятия в целом. И какие же сюрпризы ожидаются для сабжа? Только добавятся операции по загрузке/выгрузке в память.
|
|||
18
alexsandrinia
24.08.11
✎
10:41
|
возвращаюсь к (12), немного разъяснений. есть:
Табл.1 и Табл.2 а б а с а в а д нужно соединить эти таблицы так, чтобы было: б с в д но пока получается только а б а с а б а д а в а с а в а д |
|||
19
acsent
24.08.11
✎
10:43
|
(18) По какому признаку строка из 1 таблицы соответствует строке из 2? Но номеру строки?
|
|||
20
Ненавижу 1С
гуру
24.08.11
✎
10:44
|
(18) почему так?
б с в д а не в с б д вопрос? |
|||
21
alexsandrinia
24.08.11
✎
10:46
|
(19) скорее всего да, по номеру строки
|
|||
22
ЛЮС
24.08.11
✎
10:52
|
(21) скорее всего - очень многообещающе.
А если количество строк различно? А если значения будут повторяться во 2/4 колонке? |
|||
23
alexsandrinia
24.08.11
✎
10:54
|
(22) я и не знаю, как, надо придумать. дали просто как должно выглядеть в итоге и всё...
|
|||
24
alexsandrinia
24.08.11
✎
11:25
|
(15) больше вроде нет никаких условий, остальное всё одинаковое (имея ввиду данные)
|
|||
25
alexsandrinia
24.08.11
✎
11:38
|
ну что? у кого есть какие варианты?
|
|||
26
ЛЮС
24.08.11
✎
12:01
|
(22) Прежде чем решать КАК делать запрос, нужно четко определить ЧТО нужно увидеть.
Можешь копать в сторону нумерации строк в запросе. Когда пронумеруешь - можно будет по ним делать соединение. А вот как их пронумеровать - задача не тривиальная, но и не зубодробительная. Хинт: используй ВТ, соединение таблицы с собой же, сравнение больше/меньше по сортируемому полю и группировки. |
|||
27
alexsandrinia
24.08.11
✎
12:49
|
(26) мне нужно, чтоб выводились счета Дт и Кт по БУ и НУ в одной таблице
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |