2015-01-08 31 views
0

我是新来的数据库。使用SQLite3来存储一个Lua脚本的对象,我想交织两个表。如何建立关系

比方说,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,因此不应出现任何混淆。

问题是如何设置此交错表。

我尝试这样做:

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

这只是它应该是什么样子的概念,但我不知道如何去做。对数据库真的很陌生。 – Sempie

回答

0

希望这hepls(我会假设你是真正的新为DB):

  1. 在前,名与可读性名称列,你以后会感谢你的自我为
  2. 其次,改变樱雪RT子句:

    INSERT INTO Interleave (_A, _B) VALUES ((SELECT Idx FROM Class_A WHERE name = 'john'), (SELECT Idx FROM Class_B WHERE name = 'griffin'))