Я получаю сообщение об ошибке:
the multi-part identifier "IC.industry" could not be bound
при выполнении этого SQL-запроса со страницы JSP через JDBC:
select C.company, C.shname, C.fullname, count(d_to_c.designer)
from companies C
left join ind_to_c IC on C.company = IC.company
left join d_to_c on C.company= d_to_c.company
where IC.industry = ?
group by C.company, C.shname, C.fullname
order by C.shname
и я пытаюсь запустить его как подготовленный оператор, где я устанавливаю параметр через (например) stmt.setObject(1, 7) перед запуском stmt.executeQuery().
Теперь, что странно: если я выполняю это с ? и устанавливаю параметр, как я только что упомянул, я получаю ошибку «невозможно связать». Однако если я просто изменю запрос и жестко запрограммирую число 7 в тексте запроса, это сработает!
Значит, он что-то связан с привязкой этого параметра.
Но я не могу понять, что.
Кто-нибудь?
ОБНОВЛЕНИЕ: по запросу определение таблицы для ind_to_c:
industry - int(11)
company - int(11)
(это просто таблица, определяющая отношения m2m между отраслями и компаниями)
ОБНОВЛЕНИЕ 2: Также по запросу полный код JSP. Мне пришлось вытащить это из вызова абстракции подключения к базе данных (которое мы используем для хранения подготовленных операторов и т. д.).
// conn был инициализирован как объект соединения с базой данных.
int parent_id = 7;
PreparedStatement ps = conn.prepareStatement("select C.company, C.shname, C.fullname, count(d_to_c.designer) from companies C left join ind_to_c IC on C.company = IC.company left join d_to_c on C.company = d_to_c.company where IC.industry = ? group by C.company, C.shname, C.fullname order by C.shname");
ps.setObject(1, parent_id);
ResultSet rs = null;
rs = ps.executeQuery();