2012-10-23 2 views
0

내가 가진이 2 내 Grails의 컨트롤러에 SQL 쿼리를 다음MSSQL/SQL 쿼리 조건 오류

def query1 = sql.rows("select abc from table_one where cond = 1") 

쿼리 1의 반환 결과는 내게 오류를 시도하는 데 문제 [{abc=5}]

def query2 = sql.rows("select req from table_two where abc = " +query1) 

을 제공합니다 query2를 실행하고 나는 그 이유를 모른다.

열 이름 abc 나는 table_one, 이에 cond = 1에서 abc의 값을 가져, 변수 쿼리 1에 할당하려고, table_onetable_two 모두에 존재합니다.

및 쿼리 2와

, 나는 table_two에서 abc의 값이 쿼리 2의 값에 동일해진다 table_two에서 req의 값을 얻기 위해 노력하고 있어요.

어떤 도움이 필요합니까? 쿼리 1에서

오류 메시지 : 그건 당신이 모두 일반적으로 하나 개의 쿼리에서 그것을 할 수처럼

select table_two.req 
    from table_one, 
     table_two 
where table_one.cond = 1 
    and table_one.abc = table_two.abc 

테이블을 결합 :

Message:Unclosed quotation mark after the character string '[abc:5]'. 

답변

0

당신은 INNER JOIN

select b.req 
from table_one a 
     INNER JOIN table_two b 
      ON a.abc = b.abc 
where a.cond = 1 

다음 구문이 ANSI SQL-92이다 사용하여 테이블을 가입 할 수 있습니다.

+0

해결해 주셔서 감사합니다. (: – user1718890

1

왜 다음 쿼리 같은 것을 사용하지 더 효율적이고 정확한 (즉, 데이터베이스 테이블은 두 쿼리간에 변경되지 않습니다).

+0

와우 나는 그것을 생각하지 않았다! 정말 고맙습니다. 하지만 'a'근처의 구문이 잘못되었습니다. 42000/102 – user1718890

+0

@ user1718890, 잘못 입력했을 수 있습니다. 그것은 표준에 따라 유효한 구문입니다. _ 및 _ MSSQL도이를 지원합니다. 별칭을 없애기 위해 그것을 바꿀 것인데, 그 이유는 그것이 일반적으로 타이핑을 줄이기 위해서만하는 일이기 때문입니다. – paxdiablo