import sqlite3
# get connection and cursor objects
conn = sqlite3.connect('iodatabase.sdb')
c = conn.cursor()
# create tables
c.execute('''create table grand_parent (
id integer primary key autoincrement,
name text
)''')
c.execute('''create table parent (
id integer primary key autoincrement,
name text
grand_parent_id text,
FOREIGN KEY(grand_parent_id) REFERENCES grand_parent(name)
)''')
c.execute('''create table child (
id integer primary key autoincrement,
name text,
module text,
type text,
desc text,
parent_id text,
FOREIGN KEY(parent_id) REFERENCES parent(name)
)''')
c.execute("INSERT INTO grand_parent VALUES(null, 'AS1')")
c.execute("INSERT INTO parent VALUES(null, 'Parent1', 'AS1')")
c.execute("INSERT INTO child VALUES(null, 'Child1', 'AO', 'CVXY', '1', 'Parent1', 'AS1')")
c.execute("INSERT INTO child VALUES(null, 'Child2', 'AO', 'CVXY', '1', 'Parent1', 'AS1')"
c.execute("INSERT INTO child VALUES(null, 'Child3', 'AI', 'FTRE', '1', 'Parent1', 'AS1')"
c.execute("INSERT INTO child VALUES(null, 'Child4', 'AI', 'FTRE', '1', 'Parent1', 'AS1')")
c.execute("INSERT INTO parent VALUES(null, 'Parent2', 'AS1')")
c.execute("INSERT INTO child VALUES(null, 'Child1', 'AO', 'CVXY', '1', 'Parent2', 'AS1')")
c.execute("INSERT INTO child VALUES(null, 'Child6', 'AI', 'FTRE', '1', 'Parent2', 'AS1')")
c.execute("INSERT INTO child VALUES(null, 'Child4', 'BO', 'MESR', '1', 'Parent2', 'AS1')")
大家好,
我有三张桌子。一个将是祖父母,一个将是父母,最后一个将是子表。我的意思是,我希望我的孩子数据知道它属于哪个父母和父母。此外,我希望我的父数据知道它属于哪个祖父母。我试着亲自去做。但我不能。我应该如何建立表格之间的关系?桌面结构应该如何?
提前致谢。
修改
忽略代码。只需在原始sql中设置三个表,以便满足所需的关系。 这是我第一次做这样的事情,我需要指导。
答案 0 :(得分:2)
如果我明白:
问题出在这里:FOREIGN KEY(parent_id) REFERENCES parent(name)
并且会FOREIGN KEY(parent_id) REFERENCES parent(id)
。引用ID代替NAME。
通过查询引用父表,您可以从子表返回祖父表记录。
请评论,如果它不是您要找的。 p>