有人能简单解释一下这两个表之间的关系吗

Can someone shortly explain the relationship between these two tables

-我想在这两个 table 之间建立关系。

-如您所见,这两个 table 理论上相互关联。

-table两个ser_id是在table行'value'下找到一个。 但仅在名称为 'Apliance' 的列中。

-我如何建立参考以及这是什么类型的关系。对我来说,在 'value' 和 'ser_id'

之间创建引用是合乎逻辑的

-我目前正在与 mysql workbench

合作

简单地说,这些表并没有真正的关系,不是为关系数据库定义的。

如果您只想确定表 2 中的每个 ser_ID 是否在表 1 中找到,请在 Table1.value 和 Table2.ser_ID(日期和加载时间)上通过 JOINing 执行“查找不匹配”查询Table1 的记录将被删除)。

SELECT Table2.* FROM Table2 
LEFT JOIN Table1 ON Table2.ser_id = Table1.value
WHERE Table1.value Is Null;

或:

SELECT * FROM Table2 WHERE ser_ID NOT IN (SELECT [value] FROM Table1);

Table1 是一个entity/attribute/value 结构,虽然实体没有明确标识(可能是一些事件,例如测试?)。我假设:

  1. 每组连续的 3 条记录都与同一实体相关联,并且每组中始终有 3 条记录且只有 3 条记录
  2. Apliance 值在表 1 中没有重复,ser_id 在表 2 中也没有重复
  3. 指数始终为正且递增。

基于这些假设,使用 DCount() 的 Access CROSSTAB 查询可以将 Table1 数据重新排列为规范化结构(具有讽刺意味的是 CROSSTAB 通常对数据进行反规范化)。

TRANSFORM First(Table1.value) AS FirstOfvalue
SELECT DCount("*","Table1","[name]='" & [name] & "' AND [index]<" & [index])+1 AS GrpID
FROM Table1
GROUP BY DCount("*","Table1","[name]='" & [name] & "' AND [index]<" & [index])+1
PIVOT Table1.name;
GrpID  Apliance     date            loadtime  
1      x4500    01.01.2005 14:00:00    44  
2      x4501    01.01.2005 14:00:14    60  

嵌套查询可以计算组标识符:

SELECT Table1.name, Table1.value, 
       (SELECT Count(*) AS Seq FROM Table1 AS Dup 
        WHERE Dup.Name=Table1.Name AND Dup.Index<Table1.Index)+1 AS GrpID
FROM Table1;

不幸的是,使用该查询作为 CROSSTAB 的源失败。

MySQL 没有 DCount() 函数。嵌套查询应该是可能的,但是,我不知道它是否可以被透视,因为我不能让它在 Access 中工作。

CROSSTAB 的替代方法是使用嵌套查询作为聚合查询的源,聚合查询计算字段以模拟 CROSSTAB:

SELECT Query1.GrpID, 
       Max(IIf([name]="Apliance",[value],Null)) AS Apliance, 
       Max(IIf([name]="date",[value],Null)) AS [date], 
       Max(IIf([name]="loadtime",[value],Null)) AS loadtime
FROM
       (SELECT Table1.name, Table1.value, 
            (SELECT Count(*) AS Seq FROM Table1 AS Dup 
             WHERE Dup.Name=Table1.Name AND Dup.Index<Table1.Index)+1 AS GrpID
        FROM Table1) AS Query1
GROUP BY Query1.GrpID;