Search code examples
joinouter-joinkdb

Cross join of two tables


I have two tables x and y. I want to join on column b such that I get z in output.

x:([a:1 2 1 3]; b:`a`a`b`b)
q) a | b
   -----
   1 | a
   2 | a
   1 | b
   3 | b

y:([b:`a`a`a`b]; c:7 8 9 10)
q) b |  c
   ------
   a |  7
   a |  8
   a |  9
   b | 10

Desired output:

q) a |  b |  c
   -----------
   1 |  a |  7
   1 |  a |  8
   1 |  a |  9
   2 |  a |  7
   2 |  a |  8
   2 |  a |  9
   1 |  b | 10
   3 |  b | 10

Is this some sort of cross join?


Solution

  • An equi join (ej) will produce the result you want:

    q)ej[`b;x;y]