2015-06-15 5 views
2

Я использую запрос INNERJOIN на двух таблицах, назвав EMPLOYEE & ОТДЕЛ. Существует общий empID (1234), который является общим в обеих таблицах, и я хочу получить данные из обеих таблиц, используя запрос соединения. BUt его не работает. Вот мой код ниже:INNER JOIN Запрос не работает

NSString *querySQL = [NSString stringWithFormat: 
@"Select EMPLOYEE.* from EMPLOYEE INNER JOIN DEPARTMENT ON EMPLOYEE.empID = DEPARTMENT.empID =%@",_txtfind.text]; 

     NSLog(@"fetch query is%@",querySQL); 

     const char *query_stmt = [querySQL UTF8String]; 

     if (sqlite3_prepare_v2(database, 
     query_stmt, -1, &statement, NULL) == SQLITE_OK) 
     { 
      if(sqlite3_step(statement) == SQLITE_ROW) 
      { 
       NSString *name = [[NSString alloc] initWithUTF8String: 
       (const char *) sqlite3_column_text(statement, 0)]; 
       [resultArray addObject:name]; 
       NSString *department = [[NSString alloc] initWithUTF8String:(const char *) sqlite3_column_text(statement, 1)]; 
       [resultArray addObject:department]; 
       NSString *year = [[NSString alloc]initWithUTF8String: 
       (const char *) sqlite3_column_text(statement, 2)]; 
       [resultArray addObject:year]; 
       NSLog(@"result array is %@",resultArray); 


      } 
      else{ 
       NSLog(@"Not found"); 
        } 
      sqlite3_reset(statement); 
     } 

Его всегда собираются еще часть и отображает «Не найдено». Я что-то не так? Правильно ли мой запрос на соединение? Я новичок, чтобы присоединиться к концепции, поэтому, пожалуйста, помогите мне, ваши идеи полностью приветствуются.

+0

Выполняется ли запрос в автономном режиме в SQLlite? Возможно, что результирующий набор возвращается пустым, и в этом случае вы получите ответ «Не найден». –

+0

@TimBiegeleisen дает пустоту при запуске в sqllite. Что мне теперь делать??? – Prakash

ответ

1

Это запрос, который я не понимаю до конца пункта on:

Select EMPLOYEE.* 
from EMPLOYEE INNER JOIN 
    DEPARTMENT 
    ON EMPLOYEE.empID = DEPARTMENT.empID =%@",_txtfind.text]; 

Может быть, вы хотите where положения какого-то?

Select e.*, d.col1, d.col2, . . . 
from EMPLOYEE e INNER JOIN 
    DEPARTMENT d 
    ON e.empID = d.empID 
where e.empId = 'txtfind.text'; -- something like this 

В любом случае, если это не помогает, то изменить свой вопрос и показать запрос SQL после подстановки переменных.

+0

# Gordon Linoff thnks это работало для меня. – Prakash

+0

Но есть проблема. Данные из второй таблицы (ОТДЕЛ) не отображаются. Его отображение данных происходит только из первой таблицы (EMPLOYEE). Я хочу отображать empdesignation, который существует в таблице DEPARTMENT. Любая идея, как это сделать. – Prakash

+0

@ xxxy2j. , , Это потому, что ваш образец запроса имеет «EMPLOYEE. *». Если вам нужны столбцы из 'DEPARTMENT', тогда вам также необходимо включить' d.col1', 'd.col2' и т. Д. (Для соответствующих столбцов). –

Смежные вопросы