Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 различные комбинации в результате объединения  [new]
tiler
Member

Откуда: Владимир
Сообщений: 11
есть две таблицы:
t1 (num i, kod c(5))
t2 (har i, kod c(5))
связь по полю kod

нужно в результате объединения получить для различных har, различные num (для каждого кода (kod) количество записей в t1 и t2 одинаково)
например:
t1:
1 iz444
2 iz444
3 iz444

t2:
7 iz444
9 iz444
1 iz444

t_result:
1 iz444 7
2 iz444 9
3 iz444 1

ЗЫ вроде бы все просто, НО кроме извращений ничего не лезет в голову :(
16 мар 05, 02:51    [1388631]     Ответить | Цитировать Сообщить модератору
 Re: различные комбинации в результате объединения  [new]
Ilhom_uz
Member

Откуда:
Сообщений: 212
>ЗЫ вроде бы все просто, НО кроме извращений ничего не лезет в голову :(

Да время сколько?
На утро подумай...
16 мар 05, 07:01    [1388683]     Ответить | Цитировать Сообщить модератору
 Re: различные комбинации в результате объединения  [new]
w3d
Member

Откуда: Сургут
Сообщений: 681
если все еще ничего не придумал, то:
select * from t1, t2 where t1.kod=t2.kod
так пойдет?
16 мар 05, 07:47    [1388711]     Ответить | Цитировать Сообщить модератору
 Re: различные комбинации в результате объединения  [new]
tiler
Member

Откуда: Владимир
Сообщений: 11
w3d
если все еще ничего не придумал, то:
select * from t1, t2 where t1.kod=t2.kod
так пойдет?

нет...в результате этого запроса имеем для каждого num все возможные har, т.е. для моего примера это будет 9 строчек, а мне надо получить те же три строчки при этом у всех них разные har и разные num (например, смотри мой первый пост)

пока сделал так: упроядочил обе таблицы по полю kod и делаю параллельные skip каждый раз формируя одну запись итоговой таблицы... может быть есть более прямые способы?
16 мар 05, 11:26    [1389602]     Ответить | Цитировать Сообщить модератору
 Re: различные комбинации в результате объединения  [new]
leaf
Member [заблокирован]

Откуда: Ростов-на-Дону --> Москва
Сообщений: 2661
ну если вы гарантируете 100 % соответсвие один к одному то как то так

select num,kod from t1 order by kod,num into curs qq1
select num,kod,recno() as r1 from qq1 into curs qq2
select har,kod from t2 order by kod,num into curs qq3
select har,kod,recno() as r2 from qq1 into curs qq4

select num,har,qq4.kod from qq4,qq2 where r1=r2 and qq4.kod=qq2.kod into curs qq5

но вообще надежней через перебор
16 мар 05, 16:23    [1391376]     Ответить | Цитировать Сообщить модератору
 Re: различные комбинации в результате объединения  [new]
leaf
Member [заблокирован]

Откуда: Ростов-на-Дону --> Москва
Сообщений: 2661
совсем извращенно
select num,kod from t1 order by kod,num into curs qq1
select num,kod,recno() as r1 from qq1 into curs qq2
select kod,min(r1) as r1 from qq2 into curs qq3 group by kod
select qq2.kod,num,(qq2.r1-qq3.r1) as r1 from qq2 left join qq3 on qq2.kod=qq3.kod into curs qq5

select har,kod from t2 order by har,num into curs qq1
select har,kod,recno() as r1 from qq1 into curs qq2
select kod,min(r1) as r1 from qq2 into curs qq3 group by kod
select qq2.kod,har,(qq2.r1-qq3.r1) as r1 from qq2 left join qq3 on qq2.kod=qq3.kod into curs qq4

select nvl(num,0) as num,nvl(har,0) as har,nvl(qq4.kod,qq5.kod) as kod from qq4 full join qq5 on qq4.kod=qq5.kod and qq4.r1=qq5.r1 into curs qq6
16 мар 05, 16:34    [1391429]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить