2017-08-09 9 views
0

2つのテーブルの値を1つのテーブルに挿入する必要があります。 この表では、別の表のある列にある主薬と他の薬剤の両方にIDを割り当てる必要があります。 FAILED: だから、すべての列が他のテーブル(unique_drugs_drug_id)私はこのために参加使って、文をコンパイル中にエラー」エラーを取得していますハイブテーブルに値を挿入中にエラーが発生しました

から来る一つのテーブル(d_temp_drugs)プライマリおよび他の薬剤のIDのみから来るSemanticExceptionを[エラー10007]:_u1-subquery1のあいまいな列参照drug_id "

以下は、テーブルを作成して値を挿入するためのコードです。 Plsは修正を提案します。

create table study_drug_mapping 
(
    trial_identifier string, 
    cto_id int, 
    primary_drug string, 
    primary_drug_id int, 
    other_drug string, 
    other_drug_id int 
) 

insert into table study_drug_mapping (trial_identifier, cto_id, primary_drug, primary_drug_id, other_drug, other_drug_id) 
select d_temp_drugs.trial_identifier, d_temp_drugs.cto_id, d_temp_drugs.primary_drugs_sorted, unique_drugs_drug_id.drug_id, d_temp_drugs.other_drugs_sorted, unique_drugs_drug_id.drug_id 
from 
(
select d_temp_drugs.trial_identifier, d_temp_drugs.cto_id, d_temp_drugs.primary_drugs_sorted, drugs.drug_id, d_temp_drugs.other_drugs_sorted, drugs.drug_id 
from d_temp_drugs left join unique_drugs_drug_id drugs on d_temp_drugs.primary_drugs_sorted = drugs.unique_drug_name 
union 
select d_temp_drugs.trial_identifier, d_temp_drugs.cto_id, d_temp_drugs.primary_drugs_sorted, drugs.drug_id, d_temp_drugs.other_drugs_sorted, drugs.drug_id 
from d_temp_drugs left join unique_drugs_drug_id drugs on d_temp_drugs.other_drugs_sorted = unique_drugs_drug_id.unique_drug_name 
) a 

答えて

0

この試してみてください。これを試してみてください

create table study_drug_mapping 
(
    trial_identifier string, 
    cto_id int, 
    primary_drug string, 
    primary_drug_id int, 
    other_drug string, 
    other_drug_id int 
); 

insert into table study_drug_mapping 
select 
    trial_identifier, 
    cto_id, 
    primary_drugs_sorted, 
    drug_id, 
    other_drugs_sorted, 
    drug_id 
from 
(
select 
    d_temp_drugs.trial_identifier as trial_identifier, 
    d_temp_drugs.cto_id as cto_id, 
    d_temp_drugs.primary_drugs_sorted as primary_drugs_sorted, 
    drugs.drug_id as drug_id, 
    d_temp_drugs.other_drugs_sorted as other_drugs_sorted, 
    drugs.drug_id as drug_id 
from d_temp_drugs left join unique_drugs_drug_id drugs on (d_temp_drugs.primary_drugs_sorted = drugs.unique_drug_name) 
union 
select 
    d_temp_drugs.trial_identifier as trial_identifier, 
    d_temp_drugs.cto_id as cto_id, 
    d_temp_drugs.primary_drugs_sorted as primary_drugs_sorted, 
    drugs.drug_id as drug_id, 
    d_temp_drugs.other_drugs_sorted as other_drugs_sorted, 
    drugs.drug_id as drug_id 
from d_temp_drugs left join unique_drugs_drug_id drugs on (d_temp_drugs.other_drugs_sorted = unique_drugs_drug_id.unique_drug_name) 
)a 
+0

エラーがスローされます最終SELECTSUBQUERYテーブルを参照しているかなり接近しています:ステートメントをコンパイル中にエラーが発生しました:FAILED:ParseException行11:0がありません '挿入'近くの ')' – Vaibhav

+0

私は参照してください... "テーブルを作成したら、今すぐOKにしてください – Jenny

0

を、あなたはこのエラーを取得

INSERT INTO TABLE study_drug_mapping (trial_identifier, cto_id, primary_drug, primary_drug_id, other_drug, other_drug_id) 
SELECT 
     A.trial_identifier, 
     A.cto_id, 
     A.primary_drugs_sorted, 
     A.drug_id, 
     A.other_drugs_sorted, 
     A.drug_id 
FROM 
(
SELECT 
     d_temp_drugs.trial_identifier, 
     d_temp_drugs.cto_id, 
     d_temp_drugs.primary_drugs_sorted, 
     drugs.drug_id, 
     d_temp_drugs.other_drugs_sorted, 
     drugs.drug_id 
FROM d_temp_drugs 
LEFT JOIN unique_drugs_drug_id drugs ON d_temp_drugs.primary_drugs_sorted = drugs.unique_drug_name 
UNION --Make use of UNION ALL incase you need all the data from both the SELECT statements 
SELECT 
     d_temp_drugs.trial_identifier, 
     d_temp_drugs.cto_id, 
     d_temp_drugs.primary_drugs_sorted, 
     drugs.drug_id, 
     d_temp_drugs.other_drugs_sorted, 
     drugs.drug_id 
FROM d_temp_drugs 
LEFT JOIN unique_drugs_drug_id drugs ON d_temp_drugs.other_drugs_sorted = unique_drugs_drug_id.unique_drug_name 
) A 
関連する問題