我有一个带有字段/文本框/等的标签控件的表单。引用多个表进行输入。我所有的桌子都有一对一的关系。主表主键是P_ID。所有其他表都有自己的主键和P_ID fk。我试图找到Access的方式来读取表格并相应地填充我的表单。我真的不想使用子表单。我通过ODBC连接器使用MS Access作为MYSQL数据库的前端。
编辑:我尝试做一个SELECT t1.c1,t2.c1,...等来自t1,t2 .... tn JOIN(t1,t2,... tn)ON(t1.c1 = t2。 c1 AND tn ... = tn ...)我收到FROM语法错误。
Edit2:基于katstevens'查询结构我试过这个:
SELECT * FROM
T2 INNER JOIN
(T3 INNER JOIN
(T4 INNER JOIN
(T5 INNER JOIN
ON T5.ID = T1.ID)
ON T4.ID = T1.ID)
ON T3.ID = T1.ID)
ON T2.ID = T1.ID;
T1.ID是主键。所有其他表(T2-T5).ID都是fk。每个表都有自己的主键(未列出)。我在FROM子句中遇到语法错误。所有表都与T1具有一对一的关系。
答案 0 :(得分:1)
假设您有以下内容:
Table_1, primary key = P_ID
Table_2, foreign key = P_ID2
Table_3, foreign key = P_ID3
如果它们都是一对一的(即表1中的每条记录在表2中只有一条记录),那么我想知道为什么表2和3没有使用相同的主键。但无论如何,你会像这样加入他们:
SELECT *
FROM Table_3 INNER JOIN
(Table_1 INNER JOIN Table_2 ON Table_1.P_ID = Table_2.P_ID2)
ON Table_1.P_ID = Table_3.P_ID3
我故意用外键调用不同的名字来说明哪些字段需要去哪里。这将为P_ID
的每个实例返回一条记录,其中包含单条记录中所有三个表的字段。
评论中的联接语法不正确。每个联接只能在两个表之间,并且必须至少命名一对要比较的字段以确定相等性。您可以根据需要嵌套多个,但如果使用不当,则加入=性能不佳。