如何建立关系

时间:2015-01-08 09:06:05

标签: sql sqlite lua

我是数据库的新手。使用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“:语法错误:”(无错误代码)

1 个答案:

答案 0 :(得分:0)

希望这个(我会假设你真的是db的新手):

  1. 首先,将列命名为可读名称,稍后您将感谢您的自我
  2. 其次,将insert子句更改为:

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