Выполните итерацию по строкам второй таблицы, чтобы вернуть набор результатов - PullRequest
1 голос
/ 23 октября 2019

Я пытаюсь выполнить запрос SELECT, учитывающий результат второй таблицы, путем создания комбинаций и репликации результата. Я должен следовать определенному порядку, чтобы не получить все комбинации, используя столбец ORDER.

Чтобы проиллюстрировать то, что я пытаюсь достичь:

enter image description here

До сих пор я пытался использовать SUBSELECT с JOIN для репликации результатов на основе второй таблицы.

SELECT a.table_a_id, b.label_x, b.label_y 
FROM table_a a
JOIN
(
    SELECT label_x, label_y
    FROM table_b
    WHERE b.table_a_id = a.table_a_id
) b
ON b.table_a_id = a.table_a_id

Но, конечно, я не могу ссылаться на table_a извнутри SUBSELECT.

Какими должны быть мои следующие шаги для достижения желаемого ResultSet?

1 Ответ

2 голосов
/ 23 октября 2019

Используйте здесь самообъединение в таблице table_b, при этом условием соединения является совпадение значений table_a_id, но label_y> label_x.

SELECT
    b1.table_a_id,
    b1.label_x,
    b2.label_y
FROM table_a a
INNER JOIN table_b b1
    ON b1.table_a_id = a.table_a_id
INNER JOIN table_b b2
    ON b2.table_a_id = b1.table_a_id AND
       b2.label_y > b1.label_x
ORDER BY
    b1.table_a_id,
    b1.label_x,
    b2.label_y;

screen capture from demo below

Демо

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