|
Хитро преобразовать таблицу | ☑ | ||
---|---|---|---|---|
0
GomerSimpson
25.06.12
✎
13:04
|
Есть таблица
Поставщик : Документ : Контрагент1 Поставка1 Контрагент1 Поставка2 Контрагент1 Оплата1 Контрагент1 Оплата2 Контрагент1 Оплата3 Хочется получить такую Поставщик : ДокПоставка : ДокОплата : Контрагент1 Поставка1 Оплата1 Контрагент1 Поставка2 Оплата2 Контрагент1 Оплата3 Заранее спс. |
|||
1
vicof
25.06.12
✎
13:10
|
Запросом получаешь данные из твоей ТЗ.
И два левых соединения первой таблицы с самой же собой. |
|||
2
Рэйв
25.06.12
✎
13:15
|
(1)Имхо хватит одного
|
|||
3
Ненавижу 1С
гуру
25.06.12
✎
13:15
|
||||
4
izekia
25.06.12
✎
13:15
|
(2) апиридил
|
|||
5
Rovan
гуру
25.06.12
✎
13:16
|
(+2) выборка по документам типа Поставка
и Полное соединение с выборкой по документам типа Оплата |
|||
6
GomerSimpson
25.06.12
✎
13:44
|
В результате соединения первой таблицы с самой же собой получается
Поставщик : ДокПоставка : ДокОплата : Контрагент1 Поставка1 Оплата1 Контрагент1 Поставка1 Оплата2 Контрагент1 Поставка1 Оплата3 Контрагент1 Поставка2 Оплата1 Контрагент1 Поставка2 Оплата2 Контрагент1 Поставка2 Оплата3 А надо бы вот так Поставщик : ДокПоставка : ДокОплата : Контрагент1 Поставка1 Оплата1 Контрагент1 Поставка2 Оплата2 Контрагент1 Оплата3 |
|||
7
izekia
25.06.12
✎
16:24
|
(6) по ссылке сходи, или фифо не надо?
|
|||
8
andrewks
25.06.12
✎
16:27
|
(3) чё-то я там нифига не понял условие задачи
|
|||
9
izekia
25.06.12
✎
16:28
|
у меня была подобная задача, дали как тест на собеседовании, контора компьютерами торгует?
запросом не решается |
|||
10
Ненавижу 1С
гуру
25.06.12
✎
16:29
|
(8) разнести в запросе оплаты по реализациям, тат наоборот, но суть
|
|||
11
Ненавижу 1С
гуру
25.06.12
✎
16:29
|
(9) чей-то не решается?
|
|||
12
Ненавижу 1С
гуру
25.06.12
✎
16:29
|
+(11) хотя что имел ввиду автор
|
|||
13
andrewks
25.06.12
✎
16:31
|
(10) словами понял, просто таблицы в примере там вообще непонятные какие-то
|
|||
14
izekia
25.06.12
✎
16:31
|
(11) я про задачу где есть две таблицы с общим полем и различными значениями в определенном порядке
типа: 1 1 1 2 2 1 и 1 5 2 3 2 4 и необходимо сделать что-то вроде: 1 1 5 1 2 2 1 3 2 4 |
|||
15
andrewks
25.06.12
✎
16:42
|
(14) почему нельзя?
|
|||
16
izekia
25.06.12
✎
17:07
|
(15) текст запроса в студию)
|
|||
17
Eugene_life
25.06.12
✎
17:11
|
(16) пошел за попкорном
|
|||
18
izekia
25.06.12
✎
17:18
|
без попкорна запросы не пишутся?)
|
|||
19
Eugene_life
25.06.12
✎
17:19
|
(18) Я не умею писать запросы. Зато знаю, где лежит попкорн :)
|
|||
20
Ненавижу 1С
гуру
25.06.12
✎
17:21
|
(14) а почему так
1 1 5 1 2 2 1 3 2 4 а не 1 1 1 2 5 2 1 3 2 4 |
|||
21
Ненавижу 1С
гуру
25.06.12
✎
17:21
|
+(20) в (14) нужна нормальная постановка задачи
|
|||
22
andrewks
25.06.12
✎
17:22
|
(16) с тебя точная формулировка и что ставишь на кон
|
|||
23
izekia
25.06.12
✎
17:23
|
ну я думал вы все поняли
в первой колонке ид, то есть значения общего поля для обоих таблиц во второй второе поле из первой таблицы, в третьей второе поле из второй таблицы правила, по которым создается таблица, я решил описать наглядно |
|||
24
izekia
25.06.12
✎
17:24
|
обеих таблиц*
|
|||
25
Ненавижу 1С
гуру
25.06.12
✎
17:24
|
(23) "я решил описать наглядно"
пока не вышло ))) |
|||
26
izekia
25.06.12
✎
17:37
|
в общем расположение такое:
в первой колонке идентификатор в следующих значения из соответствующих таблиц, соответствующие этому идентификатору получается количество строк с идентификатором равно максимальному числу вхождения идентификатора в таблицу среди всех таблиц значения располагаются в порядке возрастания, если количество значений меньше количества строк, то следующие за последним значением строки заполняются нуллом так понятнее? |
|||
27
izekia
25.06.12
✎
17:37
|
и мне кажется автор это и имел в виду
|
|||
28
andrewks
25.06.12
✎
18:16
|
(26) сделал
|
|||
29
timurhv
25.06.12
✎
18:22
|
Оплата и поставка связаны с помощью договора, а не контрагента, не? :)
|
|||
30
izekia
25.06.12
✎
19:19
|
(28) сам или запросом?)
|
|||
31
andrewks
25.06.12
✎
20:40
|
(30) сам. запросом :)
|
|||
32
alexhtn
25.06.12
✎
23:02
|
Длинновато, но работает
ВЫБРАТЬ ВложенныйЗапрос.Ссылка, СУММА(ВложенныйЗапрос.НомерСтроки) КАК НомерСтроки ПОМЕСТИТЬ Таблица1 ИЗ (ВЫБРАТЬ Основная.Ссылка КАК Ссылка, 1 КАК НомерСтроки, Вспомогательная.Ссылка КАК ВспомогательнаяСсылка ИЗ Справочник.Справочник1 КАК Основная ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Справочник1 КАК Вспомогательная ПО Основная.Ссылка >= Вспомогательная.Ссылка) КАК ВложенныйЗапрос СГРУППИРОВАТЬ ПО ВложенныйЗапрос.Ссылка ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВложенныйЗапрос.Ссылка, СУММА(ВложенныйЗапрос.НомерСтроки) КАК НомерСтроки ПОМЕСТИТЬ Таблица2 ИЗ (ВЫБРАТЬ Основная.Ссылка КАК Ссылка, 1 КАК НомерСтроки, Вспомогательная.Ссылка КАК ВспомогательнаяСсылка ИЗ Справочник.Справочник2 КАК Основная ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Справочник2 КАК Вспомогательная ПО Основная.Ссылка >= Вспомогательная.Ссылка) КАК ВложенныйЗапрос СГРУППИРОВАТЬ ПО ВложенныйЗапрос.Ссылка ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВложенныйЗапрос.Ссылка, СУММА(ВложенныйЗапрос.НомерСтроки) КАК НомерСтроки ПОМЕСТИТЬ Таблица3 ИЗ (ВЫБРАТЬ Основная.Ссылка КАК Ссылка, 1 КАК НомерСтроки, Вспомогательная.Ссылка КАК ВспомогательнаяСсылка ИЗ Справочник.Справочник3 КАК Основная ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Справочник3 КАК Вспомогательная ПО Основная.Ссылка >= Вспомогательная.Ссылка) КАК ВложенныйЗапрос СГРУППИРОВАТЬ ПО ВложенныйЗапрос.Ссылка ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Таблица1.Ссылка КАК Ссылка1, ВложенныйЗапрос.Ссылка2, ВложенныйЗапрос.Ссылка3 ИЗ Таблица1 КАК Таблица1 ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ Таблица2.Ссылка КАК Ссылка2, Таблица3.Ссылка КАК Ссылка3, ЕСТЬNULL(Таблица2.НомерСтроки, Таблица3.НомерСтроки) КАК НомерСтроки ИЗ Таблица2 КАК Таблица2 ПОЛНОЕ СОЕДИНЕНИЕ Таблица3 КАК Таблица3 ПО Таблица2.НомерСтроки = Таблица3.НомерСтроки) КАК ВложенныйЗапрос ПО Таблица1.НомерСтроки = ВложенныйЗапрос.НомерСтроки |
|||
33
rs_trade
25.06.12
✎
23:42
|
по моему достаточно в селекте пары кейсов
|
|||
34
rs_trade
25.06.12
✎
23:43
|
а нет. вру. ))
|
|||
35
andrewks
25.06.12
✎
23:47
|
(34) да не, не врёшь. если не считать нумерации, то так и есть
|
|||
36
GomerSimpson
26.06.12
✎
10:29
|
(32)(35) спс, то что надо
|
|||
37
izekia
26.06.12
✎
12:02
|
(32) да, это то что нужно для автора, а я к сожалению, сам условие не совсем корректно сформировал
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |