Javaでサブクエリを実装しています。この場合、準備されたステートメントを使用して2つのパラメータを入力する必要があります。Javaのプリペアドステートメントのサブクエリの外部テーブルにパラメータを渡す
内部クエリ内のパラメータの受け渡しは機能していますが、外側のパラメータにはパラメータが渡されません。
実行中にstacktraceに次のようなエラーが表示されます。したがって、準備されたステートメントは間違ったresults.Questionを返します。どのように最善の方法は、正常に外側のテーブルにパラメータを渡すことができます。以下は
ここに私の実装のサンプルコード
pst = conn.prepareStatement("SELECT slot.time_slot_id,slot.`date`,slot.count FROM
(SELECT time_slot_id,ue.`date`,COUNT(ue.user_id) AS count FROM user_event ue
RIGHT JOIN `time_slot` t ON ue.time_slot_id = t.id
WHERE ue.status= 1 AND event_id=?
GROUP BY ue.`date`,time_slot_id
) AS slot WHERE slot.count >=? ");
pst.setInt(1,eventId);
//here is the parameter that is passed to the outer table
pst.setInt(2,count);
rs = pst.executeQuery();
が全体の方法として、以下の実施していますのアップデートです。
public static DefaultListModel Fetch(int eventId){
DBconnection.connect();
DefaultListModel fetchedSlots= new DefaultListModel();
try{
//
pst = conn.prepareStatement("SELECT slot.time_slot_id,slot.`date`,slot.count FROM \n" +
"(SELECT time_slot_id,ue.`date`,COUNT(ue.user_id) AS count FROM user_event ue \n" +
"RIGHT JOIN `time_slot` t ON ue.time_slot_id = t.id\n" +
"WHERE ue.status= 1 AND event_id=?\n" +
"GROUP BY ue.`date`,time_slot_id) AS slot\n" +
"WHERE slot.count >? ");
pst.setInt(1,eventId);
//here a function is invocked using eventId to get counts
pst.setInt(2,FetchCounts(eventId));
rs = pst.executeQuery();
while(rs.next()){
fetchedSlots.addElement(new ModelSlot(rs.getInt("time_slot_id"),rs.getString("date")));
}
DBconnection.CloseConnection();
}catch (SQLException ex){
System.out.println(ex.getMessage());
}
return fetchedSlots;
}
これは、PHPとJavaコードの混乱のように見えます。実際のJavaコードを投稿してください。 – john16384
あなたが言及しているエラーは、サブクエリのパラメータが許可されていないため決してありません。 Plsはこのエラーが発生した行を含め、完全なコードを投稿します。 – dev8080
あなたは私たちにあなたの接続を開いたり閉じたりするときのエラーと他のコードを教えてください。 –