【问题标题】:MS Access not showing controls/fields/data in formMS Access 未在表单中显示控件/字段/数据
【发布时间】:2013-07-17 15:40:57
【问题描述】:

我有一个带有字段/文本框/等的选项卡控件的表单。引用多个表进行输入。我所有的表都有一对一的关系。主表主键是 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 具有一对一的关系。

【问题讨论】:

  • 如果您编辑问题以显示您尝试过的一些示例,您更有可能获得帮助。

标签: mysql sql database ms-access


【解决方案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 的每个实例返回一条记录,并在一条记录中包含来自所有三个表的字段。

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

【讨论】:

  • 我试过了。我试着做一个SELECT t1.c1, t2.c1, ... etcFROM t1,t2....tnJOIN (t1,t2,...tn) ON (t1.c1 = t2.c1 AND tn...=tn...)我得到一个FROM语法错误。
  • 如何对 Table_Main(在本例中为您的 Table_1)执行多个 INNER JOINs?另外,我不明白为什么会有一个子INNER JOIN。我是否继续为要显示记录的每个表添加子 INNER JOIN
  • 我展示的连接实际上将 Table_2 和 Table_3 连接到 Table_1 - 但它们必须单独发生。我用括号将它嵌套以使语法清晰。首先最内层的join是execute(T1和T2),然后是加入Table_3,但是如果你看到最后的条件,Table_3实际上也是加入Table_1。我建议对连接进行一些谷歌研究会更清楚
猜你喜欢
  • 1970-01-01
  • 2016-04-25
  • 2018-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多