Создать подзапрос таблицы для предложения объединения - PullRequest
0 голосов
/ 20 мая 2019

Таким образом, проблема здесь в том, что OPTION_NAME в neo_product_benefit не имеет отношения к другим таблицам, но имеет отношение к таблице neo_claims_pmb_details через столбец OPTION_ID, а в таблице neo_claims_pmb_details есть столбец BENEFIT_ID, который можно присоединить к другим таблицам.

Короче говоря

Я не совсем уверен, как будет выглядеть SQL, чтобы получить OPTION_NAME и присоединить его к другим таблицам, поэтому я подумал, что создание временной таблицы будет работать и объединятьсяэто и затем отбрасывая это потом, но я понятия не имею, как будет работать синтаксис

Любая помощь будет оценена.

SELECT        a.batch_id, 
              a.claim_id, 
              a.cover_no, 
              a.receive_date, 
              a.practice_no, 
              a.service_provider_no, 
              a.refering_provider_no, 
              b.claim_line_id, 
              b.dependent_code, 
              b.service_date_from, 
              b.service_date_to, 
              b.cheque_run_date, 
              b.process_date, 
              b.tariff_code_no, 
              b.tariff_amount, 
              b.claimed_amount, 
              c.amount_paid, 
              d.practice_name, 
              e.discipline, 
              e.discipline_description, 
              g.rule_no, 
              g.message_code, 
              g.long_msg_description, 
              h.benefit_code, 
              h.benefit_description, 
              t.option_name 

    FROM      neo_claims a 

    LEFT JOIN neo_claim_line b 
    ON        (a.claim_id = b.claim_id) 

    LEFT JOIN neo_claim_line_benefit c 
    ON        (b.claim_line_id = c.claim_line_id)

    LEFT JOIN neo_practice_details d 
    ON        ( a.practice_no = d.practice_no) 

    LEFT JOIN neo_sub_disciplines e 
    ON        ( d.sub_discipline = e.sub_discipline) 

    LEFT JOIN neo_claimline_firings g 
    ON        (b.claim_line_id = g.claim_line_id)

    LEFT JOIN neo_product_benefit h 
    ON        (c.benefit_id = h.benefit_id)

              ( 
                     SELECT i.*, 
                            j.* 
                     INTO   temp_table 
                     FROM   neo_claims_pmb_details j, 
                            neo_product_optin i)

    LEFT JOIN temp_table t 
    ON        ( j.benefit_id = t.benefit_id) 
    WHERE     a.batch_id = 3496584;
    DROP TABLE temp_table;

Ответы [ 2 ]

0 голосов
/ 20 мая 2019

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

...
LEFT JOIN neo_product_benefit h 
    ON        (c.benefit_id = h.benefit_id)
LEFT JOIN ( SELECT i.benefit_id, j.option_name  -- correct cols as needed
            FROM   neo_claims_pmb_details j, 
                   neo_product_optin i) t
    ON        (c.benefit_id = t.benefit_id) 
WHERE     a.batch_id = 3496584;
0 голосов
/ 20 мая 2019

Вы можете объединить две таблицы, добавив связанное (левое или внутреннее) объединение .. в моем примере таблицы имеют псевдонимы tx и ty

и на основе вашего комментария для создания таблицы

CREATE TABLE temp_table AS 

SELECT        a.batch_id, 
              a.claim_id, 
              a.cover_no, 
              a.receive_date, 
              a.practice_no, 
              a.service_provider_no, 
              a.refering_provider_no, 
              b.claim_line_id, 
              b.dependent_code, 
              b.service_date_from, 
              b.service_date_to, 
              b.cheque_run_date, 
              b.process_date, 
              b.tariff_code_no, 
              b.tariff_amount, 
              b.claimed_amount, 
              c.amount_paid, 
              d.practice_name, 
              e.discipline, 
              e.discipline_description, 
              g.rule_no, 
              g.message_code, 
              g.long_msg_description, 
              h.benefit_code, 
              h.benefit_description, 
              t.option_name, 
              ty.OPTION_NAME


    FROM      neo_claims a 
    LEFT JOIN neo_claim_line b ON (a.claim_id = b.claim_id) 
    LEFT JOIN neo_claim_line_benefit c ON (b.claim_line_id = c.claim_line_id)
    LEFT JOIN neo_practice_details d ON ( a.practice_no = d.practice_no) 
    LEFT JOIN neo_sub_disciplines e ON ( d.sub_discipline = e.sub_discipline) 
    LEFT JOIN neo_claimline_firings g ON (b.claim_line_id = g.claim_line_id)
    LEFT JOIN neo_product_benefit h  ON (c.benefit_id = h.benefit_id)

    LEFT JOIN neo_claims_pmb_details tx ON tx.BENEFIT_ID = h.benefit_id 
    LEFT JOIN neo_product_benefit ty ON tx.OPTION_ID = ty.OPTION_ID 

    LEFT JOIN temp_table t  ON        ( j.benefit_id = t.benefit_id) 
    WHERE     a.batch_id = 3496584;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...