我是数据库的新手。使用SQLite3来存储Lua脚本的对象,我想要交织2个表。
让我们说lua对象看起来像这样:
class_A.name = ""
class_A.currency = 0
class_A.salary = 0
class_A.misc = {}
class_A.customers = {} -- this stores related objects of class_B
class_A:function1() something is something end
class_A:function2() something is something else end
class_B.name = ""
class_B.id = ""
class_B.value = 0
class_B.consultant = {} -- this stores related objects of class_B
class_B:function1() something is different end
现在我将它们存储在SQLite表中。 “relatedObjects”-var应存储在3.表中,这应该类似于:
-- class_A table:
| Idx | Name | currency | salary | misc |
|------|-------|----------|--------|------|
| 1 | john | 1,233.00 | 2,300 | null |
| 2 | eva | 4,100.00 | 1,970 | null |
-- class_B table
| Idx | Name | currency | salary | misc |
|------|----------|----------|--------|------|
| 1 | peterson | 1,233.00 | 2,300 | null |
| 2 | griffin | 4,100.00 | 1,970 | null |
| 3 | simpson | 2,738.00 | 2,100 | null |
--Interleave
--index of the respective table
| consultant | csutomer |
|------------|----------|
| 1 | 2 |
| 2 | 1 |
| 3 | 1 |
| 3 | 2 |
我希望你明白我的观点,不要认为这是非常困难的,因此我现在感觉很好。 Idx值是AUTOINCREMENT,因此不应该出现任何混淆。
问题是如何设置此Interleave表。
我试过了:
CREATE TABLE Interleave( _A INTEGER FOREIGN KEY Class_A.Idx, _B INTEGER FOREIGN KREY Class_B.Idx)
INSERT INTO Interleave (_A, _B) VALUES ( Class_A.Idx WHERE name = 'john', Class_B.Idx WHERE name = 'griffin')
但它告诉我“靠近”WHERE“:语法错误:”(无错误代码)
答案 0 :(得分:0)
希望这个(我会假设你真的是db的新手):
其次,将insert子句更改为:
INSERT INTO Interleave (_A, _B) VALUES ( (SELECT Idx FROM Class_A WHERE name = 'john'), (SELECT Idx FROM Class_B WHERE name = 'griffin'))