Мой подготовленный оператор производит следующее сообщение об ошибке в журнале «SQLException в getVenturerSectDtls: java.sql.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 является:
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;
это может быть орфография: километров? поскольку он работает в phpMyAdmin, это не должно быть так, поэтому вы также можете вставить свой запрос phpMyAdmin, который даст некоторые подсказки. – Saky
Спасибо, Saky, я добавил код, который я использую, и работает в phpMyAdmin. – Glyn