2012-06-02 2 views
0

이것은 OrderData의 행 수를 가져 오는 SQL입니다. 바로 SQL (SQLite Database Browser에서)을 사용하면 올바른 값을 얻을 수 있습니다. 내 선택 응용 프로그램에서 FMDB를 사용하여이 선택 문을 사용할 때 0 (0) 카운트를 얻을.SELECT 문과 JOIN에 FMDB를 사용하여 행 수를 얻는 방법은 무엇입니까?

// get count of line items for each order 
FMResultSet *rs2 = [fmdb executeQuery:@"select count(orderdata.order_id) from orderdata " 
        "join custdata on custdata.customer_id = orderinfo.cust_id " 
        "join orderinfo on orderdata.order_id = orderinfo.order_id " 
        "where custdata.Bus_name = '?'", globalBusinessName]; 

while([rs2 next]) { 
    globalItemCount = [rs2 intForColumnIndex: 0]; 
} 

WHILE 문에 누락 된 것이 있습니까?

답변

1

여기서 아포스트로피가 포함 된 대체 검색어를 둘러싼 문제가 있다고 생각합니다. 그들은 인수 교체하여 쿼리를하고, 그래서 당신은 단지 executeQuery

"where custdata.Bus_name = ? ", globalBusinessName]; 

과 내 생각을 종료 할 때 (하나가 RS2에 대해 다시 전무를 받고있어 것입니다 불필요한 (해로운)중인 당신을 오류 상태를 확인한 다음 평가해야합니다.) 또는 쿼리가 결과를 찾지 못하고 올바른 rs2를 반환하지만 0 카운트가 반환됩니다.

+0

"globalBusinessName"에는 두 단어 사이에 공백이 있습니다.이 경우에는 아포스트로피가 필요합니다. – SpokaneDude

+0

문에서 인수로 바뀌어야하는 것은 아닙니다. nil 반환 값을 추적하고 오류를 확인 했습니까? – gaige

+0

예, 오류가 없습니다. 흥미로운 점은 SQLite 데이터베이스 브라우저와 SQLite 셸 도구를 사용하여 정답을 얻었지만 프로그램에서는 모두 동일한 SELECT 문을 사용한다는 것입니다. – SpokaneDude

관련 문제