英文:
SQLite selecting all from multiple tables and reading from cursor
问题
I want to retrieve the date_created from order table" can be translated as:
我想从订单表中获取date_created日期。
英文:
I have a query which retrieves data from different tables
select * from customer c, order o where c.id = o.pID
both tables have a column 'date_created' and i want to retrieve the date_created from order table
I tried Cursor c = db.execute(sql); String dateCreated = c.getString("date_created")
which returned the customer date and not the order date. when i try c.getString("o.date_created")
my app crashes and returns "E/SQLiteCursor: requesting column name with table name -- o.date_created
java.lang.Exception"
can someone please guide me on how i can get the order date_created?
I
答案1
得分: 1
这个SQL查询语句中,将客户和订单表连接,使用客户的ID和订单的pID进行匹配,然后选择所有列,并将客户的创建日期重命名为customer_date_created,订单的创建日期重命名为order_date_created。然后,可以使用c.getString("order_date_created")来获取"order_date_created"列的值。
英文:
How about this:
select *, c.date_created as customer_date_created, o.date_created as order_date_created from customer c, order o where c.id = o.pID
then just use:
c.getString("order_date_created");
答案2
得分: 1
你可以使用别名来区分列名,如下所示:
select c.date_created as cust_date, o.date_created as order_date from customer c, order o where c.id = o.pID
然后尝试:
c.getString("order_date");
英文:
You can differentiate the column name by using Alias name as below:
select c.date_created as cust_date, o.date_created as order_date from customer c, order o where c.id = o.pID
Then try:
c.getString("order_date");
答案3
得分: 1
你的查询结果集包含两列具有相同的名称,因此当你尝试通过名称 date_created
检索列时,无法确定你会得到哪个列。这就是为什么你必须为所有具有相同名称的列使用别名的原因:
select c.column1, c.column2, c.date_created as cust_date_created, .....
o.column1, o.column2, o.date_created as ord_date_created, ....
from customer c inner join [order] o
on c.id = o.pID
你可以省略不想要的列。另外,请使用适当的连接语法。
现在你可以通过以下方式获取列的值:
String dateCreated = c.getString(c.getColumnIndex("ord_date_created"))
英文:
The resultset of your query contains 2 columns with the same name, so when you try to retrieve the column by the name date_created
you can't be sure which one you get.<br/>
This is why you must use aliases for all columns that have the same name:
select c.column1, c.column2, c.date_created as cust_date_created, .....
o.column1, o.column2, o.date_created as ord_date_created, ....
from customer c inner join [order] o
on c.id = o.pID
You can omit the columns that you don't want in the results.<br/>
Also use proper join syntax.<br/>
Now you can get the column's value by:
String dateCreated = c.getString(c.getColumnIndex("ord_date_created"))
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论