I have three tables(IncidentCategory, IncidentQuestion, IncidentOption) and in which I need to fire one join query to arrange and select some data. For same, some SQL Server developers have written one query like below:
SERVER QUERY
SELECT * FROM [IncidentQuestion] AS IQ WHERE IQ.[IncidentCategoryId]=27 AND
IQ.[IsOption]=0 AND (SELECT COUNT(IO.[Id]) FROM [dbo]. [IncidentOption] AS
IO WHERE IO.[IncidentQuestionId]=IQ.[Id])<>0 ORDER BY IQ.[OrderId] ASC;
DECLARE @False BIT; SET @False=0;SELECT IP.*,COALESCE(IV.[Id], 0) AS
[IncidentValueId],COALESCE(IV.[IsChecked], @False) AS [IsChecked],IV.
[Value],IV.IncidentId FROM [IncidentOption] AS IP LEFT JOIN (SELECT * FROM
[IncidentValue] WHERE [IncidentId]=0) AS IV ON IP.[Id]=IV.[IncidentOptionId]
WHERE IP.[IncidentQuestionId]=68 ORDER BY IP.[OrderId] ASC;
In my app, I have created the tables with same column names as in server.
IncidentQuestion DbHelper:
private static final String INCIDENT_QUESTION_TABLE = "IncidentQuestionTable";
private static final String ID = "_id";
private static final String SERVER_ID = "Id";
private static final String CONTRACT_TYPE_ID = "ContractTypeId";
private static final String INCIDENT_CATAGORY_ID = "IncidentCategoryId";
private static final String QTEXT = "QText";
private static final String TYPE = "Type";
private static final String ORDER_ID = "OrderId";
private static final String IS_MANDATORY = "IsMandatory";
private static final String IS_OPTION = "IsOption";
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "IncidentQuestion";
private final Context context;
private SQLiteDatabase ourDatabase;
private DbHelper ourHelper;
public class DbHelper extends SQLiteOpenHelper {
public DbHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String locationQuery = "CREATE TABLE " + INCIDENT_QUESTION_TABLE + " ("
+ ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
+ SERVER_ID + " TEXT NOT NULL, " + CONTRACT_TYPE_ID
+ " TEXT NOT NULL, " + INCIDENT_CATAGORY_ID
+ " TEXT NOT NULL, " + QTEXT
+ " TEXT NOT NULL, " + TYPE
+ " TEXT NOT NULL, " + ORDER_ID
+ " TEXT NOT NULL, " + IS_MANDATORY
+ " TEXT NOT NULL, " + IS_OPTION + " TEXT NOT NULL);";
db.execSQL(locationQuery);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + INCIDENT_QUESTION_TABLE);
onCreate(db);
}
}
IncidentOption DbHelper:
private static final String INCIDENT_OPTION_TABLE = "IncidentOptionTable";
private static final String ID = "_id";
private static final String SERVER_ID = "Id";
private static final String INCIDENT_QUESTION_ID = "IncidentQuestionId";
private static final String OPTION_TEXT = "OptionText";
private static final String ORDER_ID = "OrderId";
private static final String PARENT_ID = "ParentId";
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "IncidentOption";
private final Context context;
private SQLiteDatabase ourDatabase;
private DbHelper ourHelper;
public class DbHelper extends SQLiteOpenHelper {
public DbHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String locationQuery = "CREATE TABLE " + INCIDENT_OPTION_TABLE + " ("
+ ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
+ SERVER_ID + " TEXT NOT NULL, "
+ INCIDENT_QUESTION_ID + " TEXT NOT NULL, " + OPTION_TEXT
+ " TEXT NOT NULL, " + ORDER_ID
+ " TEXT NOT NULL, " + PARENT_ID + " TEXT NOT NULL);";
db.execSQL(locationQuery);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + INCIDENT_OPTION_TABLE);
onCreate(db);
}
}
All Select, Insert, Create, Delete query are working perfectly, I am unable to convert and fore the server query in my local db. Can please any one help me to find out the way that how I will write the server query in my local db OR how I will write some query which will work like the server query. Suggestions are mostly appreciable.
Aucun commentaire:
Enregistrer un commentaire