BigQuery полностью объединяет две таблицы без столбца - PullRequest
0 голосов
/ 03 ноября 2019

Мой заголовок немного вводит в заблуждение и может не совсем ясно объяснить, что я пытаюсь сделать, но я надеюсь, что мой пример ниже. У меня есть два стола:

t1

col1    col2 
a       a
a       c
b       a
b       d
c       a
c       d

t2

team   game
mazs      1
mazs      2
doos      1
bahs      3
...

t2 - это очень длинный стол со многими командами и играми, тогда какt1 показан полностью - таблица из 6 строк, содержащая комбинации букв a, b, c, d. Обратите внимание, что t1 не является исчерпывающим списком спаривания a, b, c, d, а только спариванием в 6 строках.

Я хотел бы создать таблицу, которая выглядит следующим образом:

output

team  game  col1  col2
mazs     1     a     a
mazs     1     a     c
mazs     1     b     a
mazs     1     b     d
mazs     1     c     a
mazs     1     c     d
mazs     2     a     a
mazs     2     a     c
mazs     2     b     a
mazs     2     b     d
mazs     2     c     a
mazs     2     c     d

Здесь происходит то, что для каждой строки в t2 есть 6 строк в output, по одной строке для каждого из col1, col2пары из t1.

t1 и t2 создаются на моем конце из следующих запросов:

SELECT col1, col2 FROM sometable GROUP BY col1, col2
SELECT DISTINCT team, game FROM anothertable 

Первый запрос создает t1, а второй создаетt2. Спасибо за любую помощь (или с лучшим названием), спасибо!

1 Ответ

2 голосов
/ 03 ноября 2019

Он называется CROSS JOIN, см. Пример ниже:

With t1 as (
select 'a' col1, 'a' col2 union all
select 'a' col1, 'c' col2 union all
select 'b' col1, 'a' col2 union all
select 'b' col1, 'd' col2 union all
select 'c' col1, 'a' col2 union all
select 'c' col1, 'd' col2),
t2 as (
select 'mazs' team, 1 game union all
select 'mazs' team, 2 game union all
select 'doos' team, 1 game union all
select 'bahs' team, 3 game
) 

SELECT * FROM t2 cross join t1;

Выход:

+------+------+------+------+
| team | game | col1 | col2 |
+------+------+------+------+
| mazs |    1 | a    | a    |
| mazs |    1 | a    | c    |
| mazs |    1 | b    | a    |
| mazs |    1 | b    | d    |
| mazs |    1 | c    | a    |
| mazs |    1 | c    | d    |
| mazs |    2 | a    | a    |
| mazs |    2 | a    | c    |
| mazs |    2 | b    | a    |
| mazs |    2 | b    | d    |
| mazs |    2 | c    | a    |
| mazs |    2 | c    | d    |
| doos |    1 | a    | a    |
| doos |    1 | a    | c    |
| doos |    1 | b    | a    |
| doos |    1 | b    | d    |
| doos |    1 | c    | a    |
| doos |    1 | c    | d    |
| bahs |    3 | a    | a    |
| bahs |    3 | a    | c    |
| bahs |    3 | b    | a    |
| bahs |    3 | b    | d    |
| bahs |    3 | c    | a    |
| bahs |    3 | c    | d    |
+------+------+------+------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...