Большой запрос: SQL JOIN с префиксом столбца - PullRequest
0 голосов
/ 02 мая 2018

У меня есть две таблицы в Google Big Query. Одна таблица является своего рода каталогом продукции (1: 1), а вторая - информацией о продукте (1: n). Для запроса я присоединяюсь к обоим. Но объединения не выполняются, так как столбец pid и некоторые другие присутствуют в обеих таблицах.

#standardSQL
SELECT tbl1.*, tbl2.* FROM (
  SELECT * FROM `my_project.my_dataset.my_table_1`
  ) AS tbl1
LEFT JOIN ( SELECT * FROM `my_project.my_dataset.my_table_2`) AS tbl2
ON tbl1.pid = tbl2.pid
WHERE tbl1.category LIKE '111002%'

Идея 1: Как выбрать * без дублированных столбцов (которые я могу вставить вручную).

Идея 2: Как предоставить префикс слева / справа для столбцов в объединении?

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 02 мая 2018

Чтобы избежать дублирования pid с обеих сторон объединения, вместо этого используйте предложение USING:

#standardSQL
SELECT * FROM (
  SELECT * FROM `my_project.my_dataset.my_table_1`
  ) AS tbl1
LEFT JOIN ( SELECT * FROM `my_project.my_dataset.my_table_2`) AS tbl2
USING(pid)
WHERE tbl1.category LIKE '111002%'

Чтобы добавить префиксы к именам столбцов с обеих сторон объединения, используйте ссылку на таблицы в списке выбора вместо применения к ним .*:

#standardSQL
SELECT tbl1, tbl2 FROM (
  SELECT * FROM `my_project.my_dataset.my_table_1`
  ) AS tbl1
LEFT JOIN ( SELECT * FROM `my_project.my_dataset.my_table_2`) AS tbl2
USING(pid)
WHERE tbl1.category LIKE '111002%'

Столбцами, полученными в результате запроса, будут tbl1 и tbl2, которые являются STRUCT, содержащими столбцы из каждой из этих таблиц в виде полей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...