Mysql MS Access是否检查下一个相关记录,以在表单中弹出一个指示器?

Mysql MS Access是否检查下一个相关记录,以在表单中弹出一个指示器?,mysql,vba,ms-access,Mysql,Vba,Ms Access,我有一个连接到MySQL数据库的MS Access表单。此表格包含人口统计和实验室数据。实验室数据在多方面呈1:n关系 以下是样本实验室数据: Lab\u tbl ID(pk)动物ID(fk)水果日期 1001香蕉1/1/13 1011苹果2/6/12 1022香蕉2/4/13 1031苹果1/13/14 1043菠萝3/1/12 1052香蕉8/16/10 我想让表单告诉用户,一只动物改变了它在桌子上吃的食物的类型。我对vba有一些了解,主要是在显示方面,所以更改表单不是问题。我完成的前几个步

我有一个连接到MySQL数据库的MS Access表单。此表格包含人口统计和实验室数据。实验室数据在多方面呈1:n关系

以下是样本实验室数据:

Lab\u tbl

ID(pk)
动物ID(fk)
水果
<代码>日期

100
<代码>1<代码>香蕉<代码>1/1/13

101
<代码>1<代码>苹果<代码>2/6/12

102
<代码>2<代码>香蕉<代码>2/4/13

103
<代码>1<代码>苹果<代码>1/13/14

104
<代码>3<代码>菠萝
3/1/12

105
<代码>2<代码>香蕉<代码>8/16/10

我想让表单告诉用户,一只动物改变了它在桌子上吃的食物的类型。我对vba有一些了解,主要是在显示方面,所以更改表单不是问题。我完成的前几个步骤是运行
按动物ID分组和按水果ASC排序。我不能依赖于要求数据库检查ID+1,因为添加记录的顺序与其动物ID不连续。我想我需要首先
选择*FROM Lab\u Tbl order BY Fruit ASC,Animal\u ID ASC
。我需要帮助来指出动物吃了不同类型的水果。

下面演示了以下查询,该查询将为您提供特定
动物ID吃的最新水果和以前吃的水果。

SELECT mt.Animal_ID, mt.id, Fruit AS NewestFruitEaten,
  (
    SELECT st.Fruit
    FROM Lab_tbl AS st
    WHERE st.ID < mt.ID AND st.Animal_ID = 1
    ORDER BY st.ID DESC
    LIMIT 1
  ) AS OldFruitEaten
FROM Lab_tbl AS mt
WHERE mt.Animal_ID = 1
ORDER BY mt.ID DESC
LIMIT 1
编辑,使用以下查询()获取食用多种水果的动物列表:

选择不同的t1.Animal\u ID
来自实验室tbl t1
t1上的内部连接实验室tbl t2。动物ID=t2。动物ID
和t1。水果t2。水果

是的,您的第一个查询只告诉我每个动物有2个值,表中的animal 1有3个值。将检查第二个。最后输入的记录是动物吃的最新水果,对吗?上面的查询得到那个水果,然后将它与动物吃的倒数第二个东西进行比较。你想知道是否有特定的动物吃过不止一种水果吗?是的,还有所有吃过不止一种水果的动物的列表。我不需要计算每只动物吃的水果,只需要计算它是否吃了不同的水果。@user3293827,我编辑了我的答案,为您提供了一个查询,该查询将显示所有吃了多种水果的动物。这就是你想要的吗?
SELECT DISTINCT did.Animal_ID,
(
  SELECT mt.Fruit
  FROM Lab_tbl AS mt
  WHERE mt.Animal_ID = did.Animal_ID
  ORDER BY mt.ID DESC
  LIMIT 1
) AS NewestFruitEaten,
(
  SELECT st.Fruit
  FROM Lab_tbl AS st
  WHERE st.ID < 
  (
    SELECT sst.ID 
    FROM Lab_tbl AS sst
    WHERE sst.Animal_ID = did.Animal_ID
    ORDER BY sst.ID DESC
    LIMIT 1
  )
  AND st.Animal_ID = did.Animal_ID
  ORDER BY st.ID DESC
  LIMIT 1
) AS OlderFruitEaten
FROM Lab_tbl AS did
SELECT DISTINCT t1.Animal_ID 
FROM Lab_tbl t1
INNER JOIN Lab_tbl t2 ON t1.Animal_ID = t2.Animal_ID
  AND t1.Fruit <> t2.Fruit