0

我正在尝试编写一个访问数据库,但我使用 SQL 进行所有查询。我的数据库几乎完成了,但我有一个让我难过的查询。它是一个包含食谱的数据库。我有一张桌子,里面有烹饪的所有转换(汤匙到茶匙,茶匙到杯子等)。用户需要能够使用配方要求的任何单位放入成分(换句话说,我无法标准化单位,我必须找到它们是什么)。然后我需要能够将这些转换为标准化单位。这就是我遇到问题的地方,因为蔬菜之类的东西可以装在杯子,汤匙等中,而肉类之类的东西则以盎司,磅等为单位。我想避免创建一堆 vb if/then's。我觉得必须有一种方法可以用 SQL 来做到这一点,但我可以'

4

6 回答 6

3

我会以不同的方式思考这个问题。您有不同类型的度量(体积、重量、计数等)。这些措施中的每一个都有不同的可转换单位。选择度量(例如盎司),同时选择度量类型和特定单位。我有一种在相同度量类型的单位之间进行转换的方法——以支持调整配方的大小——但我不担心在不同的度量类型之间进行转换。

知道类型后,您可以根据该度量类型的基本单位将所有值存储在数据库中。根据该值,也许还有用户偏好,您可以在显示时将其转换为合适的显示单元。我认为这在 SQL 中不会特别容易做到,而且我不会害怕在代码中进行转换。您只需要为每种度量类型选择合适的单位并进行转换的不同显示格式器。

于 2009-01-14T14:58:55.497 回答
1

我认为烹饪你必须分开两种不同类型的单位

  1. 按重量
  2. 按体积

您无法将这些单位标准化,或者知道您需要 2 杯满足有什么意义?

然后,当您区分这两种不同类型的单位时,您可以将它们标准化为两个单位。也许:

  1. 杯子,茶匙,...单位为毫升
  2. 肉、蔬菜……以克或磅为单位,或其他

如果它们都具有相同的基数,那么您就可以比较它们。

于 2009-01-14T14:53:09.347 回答
0

我得到它来提取一条记录的转换因子。我只是通过查询来完成的。我基本上查找一列和一行(使用sql,列名和行名是可变的),该值就是我需要乘以的值。但是,众所周知,您永远不会只使用 sql 中的一条记录。关于如何扩展它以合并所有数据的任何想法?

于 2009-01-15T14:12:20.783 回答
0

只要您向用户询问他们正在使用的单元,并且您知道您要做什么,那么您应该能够从文件中查询答案。假设您的表看起来像:

fromUnit fromUnitFactor(可能总是 1) ToUnit ToUnitFactor(从 fromUnit 到 toUnit 所需的一切)

然后只需查询它,您就知道您在寻找什么,知道您拥有什么。然后只需将用户给出的数量乘以返回的 toUnitFactor 即可。

最大的问题是您需要表格中 from 和 to 的所有组合。

说得通?

于 2009-01-14T14:50:10.583 回答
0

用户必须为您提供单位,每个单位都有一个类型(重量、体积等)。您的“转换表”只需要包含每个单位类型的基线。即 8 盎司到一杯,128 盎司到一加仑。知道这两件事,您可以将杯子转换为加仑。

在单个查询中执行此操作是另一回事。如果你能做一点 VBA,在一次调用中得到杯到盎司,然后在另一个调用中得到盎司到加仑,我认为你会更轻松。

于 2009-01-14T15:04:20.523 回答
0

好的,

只是想发布我的解决方案,以防将来有人遇到这个问题。实际上,我用 SQL 以通常的方式制作了表格并用我对 SQL 感兴趣的所有其他数据填充它。然后我有一个 DCOUNT 函数来告诉有多少记录设置了一个变量。然后我有一个 DLOOKUP 函数,它告诉我要从什么转换到什么,并将它设置在我所在记录的新表中。呸,我想我在我的头上!感谢各位的帮助。

于 2009-01-18T15:45:25.420 回答