2016-05-22 5 views
-1

ログ「getVenturerSectDtlsでのSQLExceptionに次のエラーを生成している私の準備文はありません動作します。SQLは、しかし、準備された文が

String selectQry = ("SELECT cdID, surname, firstName, dob, archived, scoutNo, grpName, startDate, endDate, SUM(kilometres), SUM(nights) from (" + 
      "SELECT at_cub_details.cd_id as cdID, at_cub_details.cd_surname as surname, at_cub_details.cd_first_name as firstName," + 
       " at_cub_details.cd_dob as dob, at_cub_details.cd_archived as archived, at_cub_details.cd_scout_no as scoutNo, " + 
       " at_group.grp_name as grpName, " + 
       " at_section_details.sd_start_date as startDate, at_section_details.sd_end_date as endDate, " + 
       " null as kilometres, null as nights " + 
      " FROM at_cub_details, at_account_group, at_group, at_section_details " + 
      " WHERE at_account_group.acc_id = ? " + 
       " AND at_account_group.grp_id = at_cub_details.grp_id " + 
       " AND at_cub_details.grp_id = at_group.grp_id " + 
       " AND at_cub_details.cd_id = at_section_details.cd_id " + 
       " AND at_section_details.sd_start_date = (SELECT MIN(section.sd_start_date) " + 
                  " FROM at_section_details section " + 
                  " WHERE section.cd_id = at_cub_details.cd_id " + 
                   " AND section.sd_section = at_group.grp_section) " + 

    " UNION ALL " + 

    " SELECT at_cub_details.cd_id as cdID, at_cub_details.cd_surname as surname, at_cub_details.cd_first_name as firstName," + 
     " null as dob, null as archived, null as scoutNo, " + 
     " null as grpName, " + 
     " null as startDate, null as endDate, " + 
     " SUM(hr_kilometres) as kilometres, SUM(hr_nights_under_canvas) as nights " + 
    " FROM at_account_group, at_group, at_section_details, at_cub_details, at_hiking_record " + 
    " WHERE at_account_group.acc_id = ? " + 
     " AND at_account_group.grp_id = at_cub_details.grp_id " + 
     " AND at_cub_details.grp_id = at_group.grp_id " + 
     " AND at_cub_details.cd_id = at_section_details.cd_id " + 
     " AND at_section_details.sd_start_date = (SELECT MIN(section.sd_start_date) " + 
                " FROM at_section_details section " + 
                " WHERE section.cd_id = at_cub_details.cd_id " + 
                 " AND section.sd_section = at_group.grp_section) " + 
     " AND at_cub_details.cd_id = at_hiking_record.cd_id " + 
     " AND at_hiking_record.hr_start_date > (SELECT MIN(section2.sd_start_date) " + 
                   " FROM at_section_details section2 " + 
                   " WHERE section2.cd_id = at_cub_details.cd_id " + 
                    " AND section2.sd_section = at_group.grp_section) " + 
    " GROUP BY at_cub_details.cd_id " + 

    " UNION ALL " + 

    " SELECT at_cub_details.cd_id as cdID, at_cub_details.cd_surname as surname, at_cub_details.cd_first_name as firstName," + 
     " null as dob, null as archived, null as scoutNo, " + 
     " null as grpName, " + 
     " null as startDate, null as endDate, " + 
     " null as kilometres, SUM(event_nights_canvas) as nights " + 
    " FROM at_account_group, at_group, at_section_details, at_cub_details, at_event " + 
    " WHERE at_account_group.acc_id = ? " + 
     " AND at_account_group.grp_id = at_cub_details.grp_id " + 
     " AND at_cub_details.grp_id = at_group.grp_id " + 
     " AND at_cub_details.cd_id = at_section_details.cd_id " + 
     " AND at_section_details.sd_start_date = (SELECT MIN(section.sd_start_date) " + 
                " FROM at_section_details section " + 
                " WHERE section.cd_id = at_cub_details.cd_id " + 
                 " AND section.sd_section = at_group.grp_section) " + 
     " AND at_cub_details.cd_id = at_event.cd_id " + 
     " AND at_event.event_date_start > (SELECT MIN(section2.sd_start_date) " + 
                   " FROM at_section_details section2 " + 
                   " WHERE section2.cd_id = at_cub_details.cd_id " + 
                    " AND section2.sd_section = at_group.grp_section) " + 
     " GROUP BY at_cub_details.cd_id " + 
    ") a " + 
     "GROUP BY surname, firstName;"); 

だから私はSELECTステートメントを取ってそれをMS Wordに貼り付け、すべての "と+をスペースと? 30(値はクライアント側から渡されます)を返し、結果をphpMyAdmin SQLに渡して実行し、期待される結果を返します。

私はEclipse、GWT、java、mySQLを使用しています。

準備された声明で何が間違っていますか?

私はphpMyAdminのに使用し、編集されたコードは次のとおりです。

キロ、SUM(泊)として「SUM(キロ)への最初のselect文の変更 "SUM(キロ)、SUM(夜)" では
SELECT cdID, surname, firstName, dob, archived, scoutNo, grpName, startDate, endDate, SUM(kilometres), SUM(nights) from ( 
       SELECT at_cub_details.cd_id as cdID, at_cub_details.cd_surname as surname, at_cub_details.cd_first_name as firstName, 
       at_cub_details.cd_dob as dob, at_cub_details.cd_archived as archived, at_cub_details.cd_scout_no as scoutNo, 
       at_group.grp_name as grpName, 
       at_section_details.sd_start_date as startDate, at_section_details.sd_end_date as endDate, 
       null as kilometres, null as nights 
       FROM at_cub_details, at_account_group, at_group, at_section_details 
       WHERE at_account_group.acc_id = 30 
        AND at_account_group.grp_id = at_cub_details.grp_id 
        AND at_cub_details.grp_id = at_group.grp_id 
        AND at_cub_details.cd_id = at_section_details.cd_id 
        AND at_section_details.sd_start_date = (SELECT MIN(section.sd_start_date) 
                   FROM at_section_details section 
                   WHERE section.cd_id = at_cub_details.cd_id 
                    AND section.sd_section = at_group.grp_section) 

    UNION ALL 

    SELECT at_cub_details.cd_id as cdID, at_cub_details.cd_surname as surname, at_cub_details.cd_first_name as firstName, 
    null as dob, null as archived, null as scoutNo, 
    null as grpName, 
    null as startDate, null as endDate, 
    SUM(hr_kilometres) as kilometres, SUM(hr_nights_under_canvas) as nights  
      FROM at_account_group, at_group, at_section_details, at_cub_details, at_hiking_record 
      WHERE at_account_group.acc_id = 30 
       AND at_account_group.grp_id = at_cub_details.grp_id 
       AND at_cub_details.grp_id = at_group.grp_id 
       AND at_cub_details.cd_id = at_section_details.cd_id 
       AND at_section_details.sd_start_date = (SELECT MIN(section.sd_start_date) 
                  FROM at_section_details section 
                  WHERE section.cd_id = at_cub_details.cd_id 
                   AND section.sd_section = at_group.grp_section) 
       AND at_cub_details.cd_id = at_hiking_record.cd_id 
       AND at_hiking_record.hr_start_date > (SELECT MIN(section2.sd_start_date) 
                     FROM at_section_details section2 
                     WHERE section2.cd_id = at_cub_details.cd_id 
                      AND section2.sd_section = at_group.grp_section) 
      GROUP BY at_cub_details.cd_id 

    UNION ALL 

    SELECT at_cub_details.cd_id as cdID, at_cub_details.cd_surname as surname, at_cub_details.cd_first_name as firstName, 
    null as dob, null as archived, null as scoutNo, 
    null as grpName, 
    null as startDate, null as endDate, 
    null as kilometres, SUM(event_nights_canvas) as nights 
      FROM at_account_group, at_group, at_section_details, at_cub_details, at_event 
      WHERE at_account_group.acc_id = 30 
       AND at_account_group.grp_id = at_cub_details.grp_id 
       AND at_cub_details.grp_id = at_group.grp_id 
       AND at_cub_details.cd_id = at_section_details.cd_id 
       AND at_section_details.sd_start_date = (SELECT MIN(section.sd_start_date) 
                  FROM at_section_details section 
                  WHERE section.cd_id = at_cub_details.cd_id 
                   AND section.sd_section = at_group.grp_section) 
       AND at_cub_details.cd_id = at_event.cd_id 
       AND at_event.event_date_start > (SELECT MIN(section2.sd_start_date) 
                     FROM at_section_details section2 
                     WHERE section2.cd_id = at_cub_details.cd_id 
                      AND section2.sd_section = at_group.grp_section) 
      GROUP BY at_cub_details.cd_id 
      ) a 
       GROUP BY surname, firstName; 
+0

スペル:キロメートルですか? phpMyAdminで動作するので、そうであってはならないので、phpMyAdminクエリを貼り付けると、いくつかの手がかりが得られます。 – Saky

+0

Sakyさん、ありがとう、phpMyAdminで使用するコードを追加しました。 – Glyn

答えて

0

夜として "。

関連する問題