samedi 5 septembre 2015

query 3 joined tables

I have some troubles with a query.

I have 3 relations tables as you can see below:

private static final String DATABASE_NAME = "sop.db";
public static final String DATABASE_TABLEACOUNT = "datasop";
    public static final String KEY_ROWSTUDYID = "_id";
    public static final String KEY_STUDYCODE = "code_study";
    public static final String KEY_STUDYDESCRIPTION = "description_study";
    public static final String KEY_STUDYANALYST = "analyst_study";

private static final String DATABASE_TABLEELEMENTS = "elements";
    public static final String KEY_ROWELEMENTID = "_id";
    public static final String KEY_STUDYID = "idstudy";
    public static final String KEY_ELEMENTCODE = "code_element";
    public static final String KEY_ELEMENTNAME = "description_element";


private static final String DATABASE_TABLETIME = "times";
    public static final String KEY_ROWTIME = "_id";
    public static final String KEY_ELEMENTID = "idelement";
    public static final String KEY_HOURDATE = "hour_date";
    public static final String KEY_OBSERVEDYTIME = "observedtime";
    public static final String KEY_OBSERVEDACTIVITY = "observedactivity";

    private static final int DATABASE_VERSION  = 1;

    private final Context ourContext;
    private DbHelper ourHelper;
    private static SQLiteDatabase ourDatabase;

    public static class DbHelper extends SQLiteOpenHelper {

        public DbHelper(Context context) {
            super(context, DATABASE_NAME, null, DATABASE_VERSION);
        }

        @Override
        public void onCreate(SQLiteDatabase db) {
            // TODO Auto-generated method stub
            db.execSQL(" CREATE TABLE " + DATABASE_TABLEACOUNT + " (" +
                    KEY_ROWSTUDYID + " INTEGER UNIQUE PRIMARY KEY AUTOINCREMENT, " +
                    KEY_STUDYCODE + " TEXT NOT NULL, " +
                    KEY_STUDYDESCRIPTION + " TEXT NOT NULL, " +
                    KEY_STUDYANALYST + " TEXT NOT NULL);"
                    );
             db.execSQL(" CREATE TABLE " + DATABASE_TABLEELEMENTS + " (" +
                     KEY_ROWELEMENTID + " INTEGER UNIQUE PRIMARY KEY AUTOINCREMENT, " +
                     KEY_ELEMENTCODE + " INTEGER NOT NULL, " +
                     KEY_ELEMENTNAME + " TEXT, " +
                     KEY_STUDYID + " TEXT NOT NULL, FOREIGN KEY ("+KEY_STUDYID+") REFERENCES "+DATABASE_TABLEACOUNT+" ("+KEY_ROWSTUDYID+")); "
                     ); 
             db.execSQL(" CREATE TABLE " + DATABASE_TABLETIME + " (" +
                     KEY_ROWTIME + " INTEGER UNIQUE PRIMARY KEY AUTOINCREMENT, " +
                     KEY_HOURDATE + " INTEGER NOT NULL, " +
                     KEY_OBSERVEDYTIME + " TEXT NOT NULL, " +
                     KEY_OBSERVEDACTIVITY + " TEXT NOT NULL, " +
                     KEY_ELEMENTID + " TEXT NOT NULL, FOREIGN KEY ("+KEY_ELEMENTID+") REFERENCES "+DATABASE_TABLEELEMENTS+" ("+KEY_ROWELEMENTID+")); "
     );
        }

I want to make a query which shows:

  • from TABLEELEMENT select parameter KEY_ELEMENTCODE
  • from TABLETIME select parameters KEY_OBSERVEDTIME, KEY_OBSERVEDACTIVITY
  • based in from TABLEELEMENT select KEY_STUDYCODE selected by the user.

I have set the links between tables through foreign keys, but I am lost about the code to get this result.

Aucun commentaire:

Enregistrer un commentaire