Одна запись из одной таблицы для отображения на всех записях в другой таблице - PullRequest
1 голос
/ 08 апреля 2019

У меня есть две таблицы. Таблица A и B. Таблица A будет иметь такие данные, как:

    +---+---+---+
    | a | b | c |
    +---+---+---+
    | 2 | 1 | 8 |
    | 3 | 6 | 7 |
    | 4 | 5 | 9 |
    +---+---+---+

И таблица B как:

    +----+----+
    | e  | f  |
    +----+----+
    | 11 | 14 |
    +----+----+

Я хочу создать запрос SQL, который предоставил бы мне вывод, в котором я храню все записи из таблицы A и только одну запись из таблицы B, но значения из этой одной записи в каждом столбце таблицы B будут отображаться во всех записях в таблице А. Результат набора данных будет выглядеть следующим образом:

    +---+---+---+----+----+
    | a | b | c | e  | f  |
    +---+---+---+----+----+
    | 2 | 1 | 8 | 11 | 14 |
    | 3 | 6 | 7 | 11 | 14 |
    | 4 | 5 | 9 | 11 | 14 |
    +---+---+---+----+----+

Я не уверен, как SQL обрабатывает добавление таких записей в таблицу. Я хотел бы предположить, что есть способ вызвать эти поля из таблицы B и сделать какое-то соединение с таблицей A? Если есть другой вопрос, на который есть ответ, отметьте этот вопрос как ответивший. Спасибо.

Ответы [ 2 ]

2 голосов
/ 08 апреля 2019

Вы можете попробовать перекрестное соединение

select a, b, c, d, f
from A
cross join B
1 голос
/ 08 апреля 2019

Таблицы SQL по определению неупорядочены, и в них нет идентификаторов строк.Вы можете создать идентификатор строки, используя row_number(), а затем использовать его для join:

select a.a, a.b, a.c, b.e, b.f
from (select a.*, row_number() over (order by a) as seqnum
      from a
     ) a join
     (select b.*, row_number() over (order by e) as seqnum
      from b
     ) b
     on a.seqnum = b.seqnum;

Это предполагает, что первый столбец в каждой таблице определяет порядок, как в данных вашего примера.

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