2013-06-14 3 views
3

지난 6 ~ 7 시간 동안 나는 이것에 대한 해결책을 찾기 위해/검색/실험을 해왔지만 지금까지는 결과가 없습니다.JDBC에서 WHERE EXISTS 함수를 사용하는 방법

필자는 PHPMYADMIN에서 완벽하게 작동하지만 java 실행 중에는 작동하지 않는 SQL 문자열 (아래)을 가지고 있습니다. 내가 할 쿼리 실행을 시도 할 때 "을 제거를 찾을 수 없음."

되는 SQLException :

java.sql.SQLException: Column 'rid' not found. 
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1078) 
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:989) 
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:975) 
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:920) 
at com.mysql.jdbc.ResultSetImpl.findColumn(ResultSetImpl.java:1167) 
at com.mysql.jdbc.ResultSetImpl.getInt(ResultSetImpl.java:2851) 
at net.matthewauld.racetrack.server.WrSQL.getJSONClassSpecificRiders(WrSQL.java:41) 
at net.matthewauld.racetrack.server.ClientListener.parseCommand(ClientListener.java:110) 
at net.matthewauld.racetrack.server.ClientListener.run(ClientListener.java:42) 

- SQL을 실행하는 내 자바 코드가

여기
SELECT * FROM `riders` WHERE EXISTS(SELECT * FROM `ridersclasses` WHERE ridersclasses.rid = riders.id AND `cid` = '6') ORDER BY `first_name` ASC 

입니다 질문. 나는 두 개의 테이블과 일부 데이터 예제의 구조를 게시 할 예정입니다 아래

url = "jdbc:mysql://127.0.0.1:3306/racetrack2013?allowMultiQueries=true"; 
con = DriverManager.getConnection(url, user, password); 
st = con.createStatement(); 
rs = st.executeQuery(query); 

:

RidersClasses

+---------------------------------------------------+ 
|     ridersclasses     | 
+---------------------------------------------------+ 
| ID | RID | CID | BIKENUMBER | BIKEMODEL | 
+---------------------------------------------------+ 

라이더

+----------------------------------------------------------------------------------+ 
|           Riders         | 
+----------------------------------------------------------------------------------+ 
| ID | first_name | last_name | address | city_id | h_phone | c_phone | 
+----------------------------------------------------------------------------------+ 
+1

사람들은 물결표 키, SQL의 일부 ... –

+0

IMO, 당신의 경우 더 도움이 될 것입니다 (전체) stacktrace를 게시 할 수 있습니다. –

+0

지금 게시하십시오. –

답변

6

문제는 간단하다 : 재 riders 표에 rid 열이 없습니다. 문제를 추적 STRACK에 표시된의로

getInt

그래서 대신 rs.getInt("rid") 사용에서 시작 rs.getInt("id")

+0

좋은 전화는 당신이 기존의 대신에 왼쪽의 조인을 사용할 수 없도록 제거 할 수 있도록 추가 할 수 있습니다 –

+0

@ ns47731 고마워, 그거 생각했는데 rid = id 그래서 그럴 필요 없어. – Stephan

관련 문제