powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Занимательная задачка.
25 сообщений из 31, страница 1 из 2
Занимательная задачка.
    #32279516
sasha_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть талица tab1 - КодЦены-ИмяЦены
заполнена
1 - Цена0
2 - Цена1

есть таблица tab2 - КодТовара-Цена0-Цена1
заполнена
104-23,5-24,5
108-21,3-29,3

надо получить таблицу tab3 - КодТовара-КодЦены-Цена
заполнена
104-1-23,5
104-2-24,5
108-1-21,3
108-1-29,3

подскажите как осуществить сей маневр.
...
Рейтинг: 0 / 0
Занимательная задачка.
    #32279528
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На первый взгляд так

select КодТовара, 1 as КодЦены, Цена0 as Цена from tab2
union
select КодТовара, 2 as КодЦены, Цена1 as Цена from tab2
...
Рейтинг: 0 / 0
Занимательная задачка.
    #32279533
sasha_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 incold
:)
не. не то.
надо код цены брать из таблицы tab1.
(их там на самом деле много)
причем они не подряд идут.
это я для примера написал попроще.
...
Рейтинг: 0 / 0
Занимательная задачка.
    #32279536
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У тебя что значения полей в одной таблице соответствуют записям в другой?
...
Рейтинг: 0 / 0
Занимательная задачка.
    #32279541
sasha_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да. именно так
...
Рейтинг: 0 / 0
Занимательная задачка.
    #32279542
OMP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OMP
Гость
У меня было что-то подобное, я использывал функцию DLookUp(...)
...
Рейтинг: 0 / 0
Занимательная задачка.
    #32279543
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я хотел сказать названия полей соответсвуют записям
...
Рейтинг: 0 / 0
Занимательная задачка.
    #32279547
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А база какая SQL или MDB?

Потому как разные решения.
...
Рейтинг: 0 / 0
Занимательная задачка.
    #32279549
sasha_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
adp + sql server 2000
...
Рейтинг: 0 / 0
Занимательная задачка.
    #32279553
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Совершенно непонятно, по какому принципу надо заполнять КодЦены.
...
Рейтинг: 0 / 0
Занимательная задачка.
    #32279555
а федя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
c le,f gflf.n kbcnmz zctyz!

jukzltkcz z - b ltqcndbntkmyj
kbcnmz gflf.n J[ ebntkmyj
...
Рейтинг: 0 / 0
Занимательная задачка.
    #32279559
sasha_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Владимир Саныч
надо взять название столбца в tab2
найти это имя в tab1 столбце ИмяЦены
взять соответствующий КодЦены
...
Рейтинг: 0 / 0
Занимательная задачка.
    #32279566
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ясно.
У меня такая задачка была, но потом я отказался от хранения в таком виде и перешел к нормальному виду.

Решение такое (немного корявое):
Мне нужен был отчет и делал его на ХП.
В ХП
Цикл по полям таблицы Код, Цена1, Цена2, ....
Цикл либо на системной таблице, либо на вьюшке из серии INFORMATION_SCHEMA
и формирование динамического селекта с юнион.
...
Рейтинг: 0 / 0
Занимательная задачка.
    #32279604
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
1. Тогда в исходном примере ошибка. 4-я строка должна быть

108-2-29,3

2. И тогда прав incold, только будет цикл:

select КодТовара, 1 as КодЦены, Цена0 as Цена from tab2
union
select КодТовара, 2 as КодЦены, Цена1 as Цена from tab2
union
...
union
select КодТовара, N as КодЦены, Цена (N-1) as Цена from tab2
...
Рейтинг: 0 / 0
Занимательная задачка.
    #32279620
sasha_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Владимир Саныч
да четвертая строка д.б. 108-2-29,3
(сорри)
>select КодТовара, 2 as КодЦены, Цена1 as Цена from tab2
не пойдет. т.к. в таблице tab1 м.б.
КодЦены=4 а Название=ЦенаОпт
я привел просто пример с Цена0, Цена1
...
Рейтинг: 0 / 0
Занимательная задачка.
    #32279629
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Пардон.

select tab2.КодТовара, N as КодЦены, tab1.ИмяЦены as Цена from tab2, tab1 where tab1.КодЦены= N
...
Рейтинг: 0 / 0
Занимательная задачка.
    #32279642
sasha_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>tab1.ИмяЦены as Цена
в качестве цены должно быть число из столбца с именем ИмяЦены!!!
как это сделать?
...
Рейтинг: 0 / 0
Занимательная задачка.
    #32279669
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну тогда так

Цикл по записям

select ИмяЦены from tab1 group by ИмяЦены
в переменную @perem

в цикле формирование запроса
@str= 'select КодТовара, '+@perem+' as Цена from tab2'
+ union
и т.д. ну дальше то сам сможешь?
...
Рейтинг: 0 / 0
Занимательная задачка.
    #32279678
sasha_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 incold
большое сенкс :)
в принципе я так и думал.
еще один момент: а код цены как?
в Ас есть dlookup, в принципе можно им, а в adp?
...
Рейтинг: 0 / 0
Занимательная задачка.
    #32279699
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код цены можно тоже в переменную (в том же цикле)
Т.е.
@str= 'select КодТовара, '+@perem+' as Цена, '+@perem2+' as КодЦены ' from tab2'

P.S.
А ты че собираешься все это на клиенте писать, через рекордсет?
Делай лучше ХП.
...
Рейтинг: 0 / 0
Занимательная задачка.
    #32279700
Фотография Павел Воронцов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
create table price_info
         (id int not null primary key,
          name varchar( 20 ) not null
         )
go
create table good
         (id int not null primary key,
          price0 money not null,
          price1 money not null
         )
go
insert into price_info values ( 1 , 'Цена0')
insert into price_info values ( 2 , 'Цена1')
insert into good values ( 104 , 23 . 5 , 24 . 5 )
insert into good values ( 105 , 21 . 3 , 29 . 3 )

select g.id, pi.id, case pi.id 
                 when  1  then g.price0 
                 when  2  then g.price1 
                 else  0 . 0  
          end as price
from good g, price_info pi
...
Рейтинг: 0 / 0
Занимательная задачка.
    #32279704
sasha_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дык я и хочу ХП
объясняю только туго :)
кстати, спрошу еще один момент.
в ХП чтобы выдергивать по строке обязательно надо курсор лепить?
или можно из обычного селекта?

p.s. сорри за возможно тупые вопросы, ибо начинающий скулист.
...
Рейтинг: 0 / 0
Занимательная задачка.
    #32279715
sasha_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Павел Воронцов
спасибо за напряжение мозга, но дело в том, что соответсвия между номером
цены и ее именем нету!
поэтому написать when 1 then g.price0 не могу.
не знаю я к какому столбцу надо обратиться.
узнать это можно только в tab1.

Блин третий раз это говорю. хреновый из меня объяснятель :)
попробую привести другой пример, может так понятней будет.
tab1 КодЦены-ИмяЦены
1-ЦенаОпт
2-ЦенаРозн
3-ЦенаДляВани
tab2 КодТовара-ЦенаОпт-ЦенаДляВани-ЦенаРозн
115-15,26-18,25-10,33
119-68,10-69,10-65,11
надо получить tab3 КодТовара-КодЦены-Цена
115-1-15,26
115-2-10,33
115-3-18,25
119-1-68,10
119-2-65,11
119-3-69,10
...
Рейтинг: 0 / 0
Занимательная задачка.
    #32279725
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имхо, курсор все равно придется писать (а чем не нравится?)

А вообще, опять же имхо, нужно делать все по-другому -
tab2 лишняя нужно все хранить в виде tab3
...
Рейтинг: 0 / 0
Занимательная задачка.
    #32279735
sasha_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 incold
:)
да я не храню.
мне надо сконвертить одно представление в другое.
сейчас у меня куча столбцов на каждую цену, а мне надо
сделать из этого набор tab1+tab2. вот.
...
Рейтинг: 0 / 0
25 сообщений из 31, страница 1 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Занимательная задачка.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]