Могу ли я пересечь вложенную таблицу и обычную таблицу - PullRequest
0 голосов
/ 07 ноября 2018

Я создал nested table из выбранных данных таблицы.

Как я могу сравнить данные вложенной таблицы с данными обычной (множественной) таблицы? Один элемент из вложенной таблицы соответствует нескольким элементам в обычной таблице.

Код для вложенной таблицы:

DECLARE
    TYPE spec_params_tbl IS TABLE OF NUMBER;
    mstbl_spec_id   spec_params_tbl;
BEGIN
    SELECT spec_id
    BULK COLLECT
    INTO mstbl_spec_id
    FROM
        (SELECT spec_id
            FROM spec_params
            WHERE name_id = 19 AND value LIKE 'MS'
            INTERSECT
            SELECT spec_id
            FROM spec_params
            WHERE  name_id = 36 AND value LIKE 'MSI%');

    BEGIN
        FOR i IN mstbl_spec_id.first..mstbl_spec_id.last LOOP
            dbms_output.put_line(mstbl_spec_id(i));
        END LOOP;
        dbms_output.put_line('--- END NESTED TABLE---');
    END;
END;
/

Итак, здесь, в цикле for, можно ли как-нибудь задать запрос? Это дало мне несколько совпадений для каждого элемента mstbl_spec_id(i)? (SELECT не работает без INTO и выдал только одну строку)

Результат примерно такой:

| nested_id | table1_column_1 | table1_column_2 | table2_column_2 |
------------+-----------------+-----------------+------------------
|     1     |      3344       |      3333       |       4422      |
|     2     |      3344       |      4444       |       2244      |
|     3     |      5533       |      5555       |       3232      |
...