を "マルチパート識別子XX.YYをバインドできませんでした" 私はエラーを取得しています:SQL Serverの/ T-SQL:
the multi-part identifier "IC.industry" could not be bound
を経由してJSPページからこのSQLクエリを作成するとき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をクエリのテキストにハードコードすれば、それは機能します!
だから、そのパラメータのバインドにはの何かをとする必要があります。
しかし、私は何かを理解できないようです。
誰か?
UPDATE:要求ごと、ind_to_c
のためのテーブル定義:
industry - int(11)
company - int(11)
(それは業種や企業間のM2Mの関係を定義するだけで、テーブルの)
UPDATE 2:またあたり要求、完全なJSPコード。私は、connはDB接続オブジェクトとして初期化されている//
など、私たちが準備された文を格納するのに使用するデータベース接続(の抽象化への呼び出しのうち、これを引っ張っていた。
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();
実際には、私はそれをテストすることができません - setObjectにアクセスできるフレームワーク(looongストーリー)を通して操作する必要があります。はい、私はそれが愚かだと思います。とにかく、私はsetObjectを使う必要があります。 – DanM
(業界はint(11)です) – DanM
C.idはtyp_2であり、ind_to_cを読み込んでいるはずです。この投稿の目的のためにいくつかの列/表の名前を変更しました。また、テーブルdefを掲載しました。 – DanM