2015-10-10 2 views
2

Как присоединиться к трем таблицам в SQLite? У меня три таблицы, одна - Info, вторая - workForce, а третья - workDetails.Как объединить три таблицы в SQLite?

Таблица Информация: id(PK),name,status,date,weather

Таблица WorkForce: id1(PK), subContractors,noOfPeople,noOfHours

Таблица WorkDetails: id2(PK),project,workDescription,TableInfo_id(FK) //contains multiple row

Таблица Информация

ID   NAME  Weather  Date  Status 
---------- ---------- ---------- ---------- ---------- 
    1   Paul  Sunny   15/10  MC 
    2   Allen  Rainy   15/10  Working 

Таблица WorkForce

ID1   SubContractors NoOfPeople  NoOfHours 
---------- -------------- ----------  ---------- 
1   AAA    2     2 
2   BBB    3     1 

Таблица WorkDetails

ID2   Project  WorkDescription  TableInfo_id 
---------- ----------  --------------   ---------- 
1    A    B      1 
2              1 
3              1 
4              1 
5    C    D      2 
6              2 
7              2 
8              2 

Предположит имени является Полом, так что все строки с ID 1 и TableInfo_id 1 будут извлечены.

Вот что я пытался до сих пор

public Cursor readEntry(String name) { 

     String selectQuery = ("SELECT Weather,Date,Status,SubContractors,NumberOfPeople,NumberOfHours,TimeIn,TimeOut FROM "+TABLE_INFO+TABLE_WORKFORCE+TABLE_WORKDETAILS+ "WHERE Name= ? AND"+ID=ID1+ "AND"+ID=TableInfo_id); 
     Cursor c = database.query(TABLE_INFO,TABLE_WORKFORCE,TABLE_WORKDETAILS,new String[]{id,name,weather,date,status,iD1,subcontractors,numberOfPerson,numberOfHours,id2project,workDescription,TableInfo_id},MyDatabaseHelper.Name+"=?", 
       new String[] { String.valueOf(name)}, null, null, null, null,null,null,null,null,null,null,null,null); 

     if (c != null) { 
      c.moveToFirst(); 
     } 
     return c; 

    } 

Мой код кажется, не working..how я могу добиться этого? Благодаря!

+0

Любые предложения были бы очень благодарны – John

+0

Кажется, что есть много проблем с вашим запросом sqlite. Попробуйте выполнить регистрацию вашего запроса и проверить наличие ошибок. –

+0

Я понятия не имею, как присоединиться к этой таблице .. Кажется сложным .. – John

ответ

1

кулак, что вам нужно сделать, это добавить внешний ключ из Таблица Info в Таблица WorkForce и внешний ключ Таблица WorkForce в Таблица WorkDetails

Затем напишите изменить свой запрос, как этот

Select * from Table Info tf 
LEFT JOIN Table WorkForce twf ON twf.tf_id = tf.id 
LEFT JOIN Table WorkDetails twd ON twd.tw_id = twf.id 

Измените запрос, основанный на требовании после присоединения трех таблиц.

Ознакомьтесь с учебными пособиями для добавления внешнего ключа.

+1

, то должен ли я добавить внешний ключ таблицы в таблицу WorkDetails, как то, что я сделал? – John

+0

Между, \t ID в таблице WorkForce всегда будет с идентификатором в таблице Info ... Мне еще нужно добавить внешний ключ таблицы в таблицу workForce? – John

+0

см., У вас есть три таблицы справа, которые имеют какое-то отношение между ними. Теперь вы хотите запросить, чтобы получить связанный или общий результат из всех трех таблиц? Как бы Вы это сделали? должно быть какое-то общее имя или идентификатор, с помощью которого вы можете присоединиться к таблицам и написать требуемый запрос для получения результатов. – Ritesh

0
  1. Добавить внешний ключ к таблице рабочей силы в точку ID в информационной таблице
  2. выберите * от Info внутреннего соединения рабочей силы внутреннего присоединиться Workdetails ON Info.ID = Wordforce.SOME_FOREIGN_KEY И Info.ID = Workdetails. TableInfo_id Где NAME = «Пол»

Подумайте, что должно работать не пробовал Тхо

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