【发布时间】:2020-09-15 17:51:58
【问题描述】:
我有两个表 Item 和一个记录每个订单中的项目的表(Junction Table)
项目表
String itemTable = "CREATE TABLE " + ITEM_TABLE + " ("
+ ID_ITEM + " INTEGER PRIMARY KEY AUTOINCREMENT,"
+ ITEM_NAME + " TEXT,"
+ ITEM_TYPE + " TEXT,"
+ ITEM_PRICE + " TEXT);";
ORDER_ITEM 表
String orderItemTable = "CREATE TABLE " + ORDER_ITEM_TABLE + " ("
+ ID_ORDER_ITEM + " INTEGER,"
+ ID_ITEM_ORDER + " INTEGER,"
+ " FOREIGN KEY ("+ID_ORDER_ITEM+") REFERENCES "+ EMP_TABLE +"("+ ID_EMP +"), "
+ " FOREIGN KEY ("+ID_ITEM_ORDER+") REFERENCES "+ EMP_TABLE +"("+ ID_EMP +"));";
ORDER_ITEM 表中的数据每个 Item id 指的是项目表中的特定项目,这是我试图引用并用于从 DB 中提取数据的项目。
目前我可以从该表中提取 Item id,但不能使用 ID 提取实际的 Item。这里idOrder是在选择订单时传递的
String selctAllEmployeesOrdersItems = "SELECT * FROM " + ORDER_ITEM_TABLE + " WHERE " + ID_ORDER_ITEM + " = " + idOrder;
实现我想要的一种方法是将Item ID's 存储在ArrayList 中并对其进行迭代以选择所有Items,但我知道有更好的方法。
我看到的一些研究建议我加入引用 ITEM ID 的表,但我不确定语法是否正确。点表示法不适用于此查询。
String selctAllEmployeesOrdersItems = "SELECT * FROM " + ORDER_ITEM_TABLE + " WHERE " + ID_ORDER_ITEM + " = " + idOrder
+ " JOIN " + ITEM_TABLE + " ON " + ORDER_ITEM_TABLE+"."+ID_ITEM_ORDER + " = " + ITEM_TABLE+"."+ID_ITEM;
显示的错误信息是
原因:android.database.sqlite.SQLiteException:在“JOIN”附近: 语法错误(代码 1 SQLITE_ERROR):,编译时:SELECT * FROM ORDER_ITEM_TABLE WHERE ID_Order = 1 加入 ITEM_TABLE ON ORDER_ITEM_TABLE.ID_Item = ITEM_TABLE.ID
【问题讨论】:
标签: java android sqlite android-sqlite