-2

我有一个带有字段/文本框/等的选项卡控件的表单。引用多个表进行输入。我所有的表都有一对一的关系。主表主键是 P_ID。所有其他表都有自己的主键和 P_ID fk。我正在尝试为 Access 找到一种方法来读取表格并相应地填充我的表单。我真的不喜欢使用子表单。我通过 ODBC 连接器使用 MS Access 作为 MYSQL 数据库的前端。

编辑:我尝试执行 SELECT t1.c1, t2.c1, ... etc FROM 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 具有一对一的关系。

4

1 回答 1

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所有三个表的字段。

您评论中的连接语法不正确。每个连接只能在两个表之间,并且必须至少命名一对字段以进行比较以确定相等性。您可以嵌套任意数量,但如果使用不当,连接 = 性能不佳。

于 2013-07-17T15:45:44.433 回答