2015-01-08 123 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'))