2014-12-07 4 views
-1

Используя следующий запрос, я получаю данные из двух таблиц в db. Но если COL5 пуст, не отображать четные данные (TABLE1). Он также должен отображать другие данные?Android SQLite null Выберите

SQLiteDatabase db = mHelper.getReadableDatabase(); 
final List<Dettaglio1> dettagli1 = new ArrayList<Dettaglio1>();  

String sql = "SELECT C._id, " + 
      "B.col1, " + 
      "B.col2, " + 
      "B.col3, " + 
      "B.col4, " + 
      "B.col5, " + 
      "B.col6, " + 
      "SUM(C.col01), " + 
      "C.col02, " + 
      "C.col03 " + 
      "FROM table1 B LEFT JOIN table2 C ON (B.col5 = C.col02)"; 

Cursor cur = db.rawQuery(tabella_conti, null); 
    while (cur.moveToNext()){ 
     Dettaglio1 d01 = new Dettaglio1(); 
     d01.id= cur.getString(0); 
     d01.col1= cur.getString(1);      
     d01.col2= cur.getDouble(2);   
     d01.col3= cur.getString(3);    
     d01.col4 = cur.getString(4);        
     d01.col5= cur.getString(5);     
     d01.col6 = cur.getString(6); 
     d01.col01 = cur.getDouble(7);     
     d01.col02 = cur.getString(8);    
     d01.col03= cur.getString(9);     
     dettagli1.add(d01);  

     } 
     cur.close();   
     db.close(); 

.... 
.... 
} 
+0

На самом деле, это то, что я пытался объяснить. Моя цель - взять данные, даже если «COL5 пуст». Как я могу это сделать? – user3608814

+0

Нет ТАБЛИЦЫ1. Теоретически LEFT JOIN должен делать то, что вы хотите. Покажите некоторые данные примера и нужный результат. –

+0

Я отредактировал мое сообщение – user3608814

ответ

0

Если вы хотите включить NULL значения, которые вы должны использовать ВЛЕВО или ВПРАВО присоединиться, как это:

... from table1 as B RIGHT JOIN table2 as C ON (B.col5 = C.col02) 


Если RIGHT JOIN не поддерживается на некоторых платформах (спасибо @ user3608814 см комментарии) использовать LEFT JOIN и изменить порядок таблиц:

... from table2 as C LEFT JOIN table1 as B ON (C.col02 = B.col5) 

Update
Если это не помогает (когда, как вы написали, что нет данных в table2, но вы по-прежнему нужны результаты), вы должны реорганизовать вашей схемы данных:
Добавить явный внешний ключ table2, что связывает его с table1. Пусть это будет table2.extID столбец. Тогда можно запросить вот так:

... from table1 as B LEFT JOIN table2 as C ON (B._ID = C.extID) 
+0

RIGHT JOIN не поддерживается на Android – user3608814

+0

Спасибо, мне никогда не приходило в голову. Исправленный ответ – sberezin

+0

нет, к сожалению, даже в этом случае, если в таблице нет данных, ничего не отображается. У вас есть другие идеи? – user3608814