2013-02-17 4 views
0

여러 테이블의 데이터를 조인 할 작업이 있습니다. 그 중 일부는 'union'을 포함하기 전에 완료됩니다. 이제 'migrated_loan_account'테이블에서 데이터를 가져와야합니다. 그래서 나는 그것에 합류했다. 그러나 필드를 추가하면 작동하지 않습니다. 이 4 개의 필드를 주석으로 처리하면 작동합니다. 나는 무엇을해야하는지 이해하지 못한다. 누구든지 이걸 좀 도와 줄래?! 아래 코드는 다음과 같습니다.내 쿼리가 작동하지 않는 이유

` SELECT -- office_info.office_ref_code AS old_office_code 
         -- , office_info.office_code 
         -- , office_info.office_name 
         -- , project_info.project_ref_code AS old_project_code 
         -- , project_info.project_code 
         -- , project_info.project_name 
         -- , 
         IFNULL(group_info.group_reference_number, '') AS old_group_code 
         , IFNULL(RIGHT(group_info.group_code, 5), '') AS group_code 
         , IFNULL(group_info.group_name, '') AS group_name 
         , IFNULL(member_info.reference_no, '') AS old_member_code 
         , RIGHT(member_info.member_no, 5) AS member_code 
         , member_info.member_name 
         , IFNULL(savings_account.savings_balance,0) AS savings_balance 
         , la.account_ref_no AS old_loan_no 
         , la.account_no AS loan_no 
         , loan_status.name AS loan_status 
         , DATE(la.disbursement_date) AS disbursement_date 
         , IFNULL(la.disbursed_amount,0) AS disbursed_amount 
         , IFNULL(la.outstanding_balance,0) AS loan_due 
         , IFNULL(la.principal_outstanding,0) AS principal_outstanding 
         , IFNULL(la.interest_outstanding,0) AS interest_outstanding 
         , IFNULL(la.interest_realizable,0) AS interest_realizable 
         , IFNULL(la.overdue_amount,0) AS overdue_amount 
         , IFNULL(migrated_loan_account.outstanding_balance, 0) AS radar_loan_due 
         , IFNULL(migrated_loan_account.principal_outstanding, 0) AS radar_principal_outstanding 
         , IFNULL(migrated_loan_account.interest_realizable, 0) AS radar_interest_realizable 
         , IFNULL(migrated_loan_account.overdue_amount, 0) AS radar_overdue_amount 


        FROM member_info 
        INNER JOIN office_info ON 
        (office_info.id = member_info.branch_info_id) 
        INNER JOIN country_head_office ON 
        (country_head_office.id = office_info.country_head_office_id) 
        INNER JOIN country ON 
        (country.id = country_head_office.office_country_id) 
        INNER JOIN project_info ON 
        (project_info.id = member_info.project_info_id) 
        INNER JOIN country_program_info ON 
        (country_program_info.id = project_info.program_info_id) 
        INNER JOIN program_info ON 
        (program_info.id = country_program_info.program_info_id) 
        LEFT JOIN group_info ON 
        (group_info.id = member_info.group_info_id) 
        LEFT JOIN savings_account ON 
        (savings_account.member_info_id= member_info.id) 
        LEFT JOIN loan_account AS la ON 
        (la.member_id = member_info.id) 
        INNER JOIN 
        (
         SELECT member_id, MAX(disbursement_date) AS max_date 
         FROM loan_account 
         GROUP BY member_id 
       ) mla ON la.member_id = mla.member_id AND la.disbursement_date = mla.max_date 
        LEFT JOIN loan_status ON 
        (loan_status.id = la.loan_status_id) 
        LEFT JOIN migrated_loan_account ON 
        (migrated_loan_account.loan_account_id = la.id) 
        WHERE country.id = 1 AND 1=1 AND project_info.id = 'BI0000000000000000000001' AND office_info.id = 'BI0000000000000000000363' 

        UNION 

        SELECT -- office_info.office_ref_code AS old_office_code 
         -- , office_info.office_code 
         -- , office_info.office_name 
         -- , project_info.project_ref_code AS old_project_code 
         -- , project_info.project_code 
         -- , project_info.project_name 
         -- , 
         IFNULL(group_info.group_reference_number, '') AS old_group_code 
         , IFNULL(RIGHT(group_info.group_code, 5), '') AS group_code 
         , IFNULL(group_info.group_name, '') AS group_name 
         , IFNULL(member_info.reference_no, '') AS old_member_code 
         , RIGHT(member_info.member_no, 5) AS member_code 
         , member_info.member_name 
         , IFNULL(savings_account.savings_balance,0) AS savings_balance 
         , 'NO LOAN' AS old_loan_no 
         , '' AS loan_no 
         , '' AS loan_status 
         , NULL AS disbursement_date 
         , 0 AS disbursed_amount 
         , 0 AS loan_due 
         , 0 AS principal_outstanding 
         , 0 AS interest_outstanding 
         , 0 AS interest_realizable 
         , 0 AS overdue_amount 
         FROM member_info 
         INNER JOIN office_info ON 
         (office_info.id = member_info.branch_info_id) 
         INNER JOIN country_head_office ON 
         (country_head_office.id = office_info.country_head_office_id) 
         INNER JOIN country ON 
         (country.id = country_head_office.office_country_id) 
         INNER JOIN project_info ON 
         (project_info.id = member_info.project_info_id) 
         INNER JOIN country_program_info ON 
         (country_program_info.id = project_info.program_info_id) 
         INNER JOIN program_info ON 
         (program_info.id = country_program_info.program_info_id) 
         LEFT JOIN group_info ON 
         (group_info.id = member_info.group_info_id) 
         LEFT JOIN savings_account ON 
         (savings_account.member_info_id= member_info.id) 
         WHERE country.id = 1 AND 1=1 AND project_info.id = 'BI0000000000000000000001' AND office_info.id = 'BI0000000000000000000363' AND member_info.id NOT IN (SELECT loan_account.member_id FROM loan_account) 
        ORDER BY -- old_office_code, old_project_code, 
         old_group_code, old_member_code; 
       ` 

다음 필드에 주석을 달았습니다. 서둘러 도와주세요 ...

/*, ifnull(migrated_loan_account.outstanding_balance, 0) as radar_loan_due 
        , ifnull(migrated_loan_account.principal_outstanding, 0) as radar_principal_outstanding 
        , ifnull(migrated_loan_account.interest_realizable, 0) as radar_interest_realizable 
        , ifnull(migrated_loan_account.overdue_amount, 0) as radar_overdue_amount*/ 

답변

5

해당 필드를 주석 처리하면 작동합니까? 주석을 제거한 필드는 UNION에 있습니까? 공용체는 같은 수의 열을 반환해야합니다.

는 노동 조합의 두 번째 질의에 다음을 추가

, 0 AS radar_loan_due 
, 0 AS radar_principal_outstanding 
, 0 AS radar_interest_realizable 
, 0 AS radar_overdue_amount 
+0

이봐 친구 덕분에이 –

+0

@SumonBappi 작동 많은 - 걱정을, 내가 도움이 될 수 기뻐! – sgeddes

관련 문제