Skip to content
Advertisement

Join Two Non Related Tables

I have two tables Like A and B. Each have one column (ID) in ascending order. I want to join tables LIKE C Table. Datas are not statical but in A and B the row counts are always equal. I’ve tried join statements but couldn’t find out. Thanks for your help.

A (ID)
--
2
3
4
6
8

B (ID)
--
11
12
13
14
15

C ( IDA ,  IDB )
--
2     11
3     12
4     13
6     14
8     15

Advertisement

Answer

If you’re using a database that supports row_number() such as Oracle, postgresql, sql sql server:

select a_id, b_id
  from (select row_number() over(order by id) as a_rn, id as a_id from a) x
  join (select row_number() over(order by id) as b_rn, id as b_id from b) y
    on x.a_rn = y.b_rn

Fiddle: http://sqlfiddle.com/#!15/5ac6b/1/0

If you’re using mysql you can mimic row_number using a variable:

select a_id, b_id
  from (select @rn := @rn + 1 as a_rn, id as a_id
          from a
         cross join (select @rn := 0) r) x
  join (select @rx := @rx + 1 as b_rn, id as b_id
          from b
         cross join (select @rx := 0) r) y
    on x.a_rn = y.b_rn

Fiddle: http://sqlfiddle.com/#!9/5ac6b/2/0

User contributions licensed under: CC BY-SA
9 People found this is helpful
Advertisement