recurring ambiguous column name _id sqlite error in android -
i have tried editing code according suggestion found on site,but nothing seems work..i still keep getting following logcat error:
03-24 11:44:27.037: e/androidruntime(1809): caused by: android.database.sqlite.sqliteexception: ambiguous column name: _id (code 1): , while compiling: create view customerview select _id _id, fname, lname, customermeterid, customermeternumber, customerplotnumber, _id customers customers inner join meters meters on customermeterid =_id
the class referenced above in logcat:
public class viewcustomers { public static final string table_customer_view = "customerview"; public static final string customer_view_id = customertabledetails.key_customer_id; public static final string customer_view_firstname = customertabledetails.key_first_name; public static final string customer_view_lastname = customertabledetails.key_last_name; public static final string customer_view_meter = customertabledetails.key_meter_number; public static final string customer_view_plot = customertabledetails.key_plot_number; public static final string customer_view_key_meter_id = customertabledetails.key_meter_id; private static final string create_customer_view = "" + "create view " + table_customer_view + " select "+ customertabledetails.key_customer_id+" _id,"+ " "+customertabledetails.key_first_name+","+ " "+customertabledetails.key_last_name+","+ " "+customertabledetails.key_meter_id+","+ " "+customertabledetails.key_meter_number+","+ " "+customertabledetails.key_plot_number+","+ " "+metertabledetails.meter_id+""+ " "+customertabledetails.table_customers+" customers "+" inner join "+metertabledetails.table_meters+" meters"+ " on "+customertabledetails.key_meter_id+" ="+metertabledetails.meter_id; public static void oncreate(sqlitedatabase database) { database.execsql(create_customer_view); } public static void onupgrade(sqlitedatabase database, int oldversion, int newversion) { log.w(viewcustomers.class.getname(), "upgrading database version " + oldversion + " " + newversion + ", destroy old data"); database.execsql("drop view if exists " + viewcustomers.table_customer_view); oncreate(database); }
i've used aliases still no solution.now don't know how else solve it.
edit
after corrections:
private static final string create_customer_view = "" + "create view " + table_customer_view + " select "+metertabledetails.table_meters+"."+metertabledetails.meter_id+""+" "+ metertabledetails.table_meters+"."+metertabledetails.meter_id +","+ " "+customertabledetails.key_first_name+","+ " "+customertabledetails.key_last_name+","+ " "+customertabledetails.key_meter_id+","+ " "+customertabledetails.key_meter_number+","+ " "+customertabledetails.key_plot_number+","+ " "+customertabledetails.table_customers+"."+ customertabledetails.key_customer_id+ " "+customertabledetails.table_customers+" customers "+" inner join "+metertabledetails.table_meters+" meters"+ " on "+customertabledetails.key_meter_id+" ="+metertabledetails.table_meters+"."+metertabledetails.meter_id;
edit 2
03-24 13:58:24.687: i/create statement(3098): create view customerview select meters._id meters._id, fname, lname, customermeterid, customermeternumber, customerplotnumber, customers._id customers customers inner join meters meters on customermeterid = meters._id
use tablename._id in order refer _id in query above
change:
create view customerview select _id _id, fname, lname, customermeterid, customermeternumber, customerplotnumber, _id customers customers inner join meters meters on customermeterid =_id
to
create view customerview select customers._id _id, fname, lname, customermeterid, customermeternumber, customerplotnumber, _id customers customers inner join meters meters on customermeterid =customers._id // or meters._id -> whatever think suits
or
create view customerview select meters._id _id, fname, lname, customermeterid, customermeternumber, customerplotnumber, _id customers customers inner join meters meters on customermeterid =meters._id
Comments
Post a Comment