【问题标题】:Conversion between different units of measurement in SQL (in Access)SQL 中不同度量单位之间的转换(在 Access 中)
【发布时间】:2010-10-01 09:19:39
【问题描述】:

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

【问题讨论】:

    标签: sql ms-access units-of-measurement


    【解决方案1】:

    我认为烹饪时必须将两种不同类型的单元分开

    1. 按重量计算
    2. 按体积

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

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

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

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

    【讨论】:

    • 为了使事情进一步复杂化,配方中有一个惯例,即对不同的单位使用不同的物理量。例如10 毫升或 1 汤匙,500 克或 1 磅。 - 这个想法是毫升和克将反映与汤匙相同的比例。和磅(如果数量不同)。
    • 实际上在许多情况下需要在重量和体积之间进行转换。例如,在为我工作的餐厅设计库存/采购/食品定价数据库时,我必须弄清楚如何在磅和杯子之类的东西之间进行转换,因为(例如)我们按磅购买欧芹和豆类,但要测量在我们的食谱中用杯子装。为了确定我们食物的适当定价,我们必须确定 x 杯中有多少磅欧芹/豆子……这意味着实际称量我们所有食物的一定体积并将这些测量值输入系统。跨度>
    【解决方案2】:

    好的,

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 您可能在暗指交叉连接,例如从 OneRowTable、TenRowTable 中选择 *; (Jet 不明确 支持 CROSS JOIN 语法)将生成一个 10 行结果集,TenRowTable 中的每一行对应一个结果集中每一行的 OneRowTable 中的一行的值。这是你需要的吗?
      【解决方案4】:

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

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

      【讨论】:

        【解决方案5】:

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

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

        【讨论】:

          【解决方案6】:

          只要您向用户询问他们正在使用的单位,并且您知道您要做什么,那么您应该能够从文件中查询答案。假设您的表格如下所示:

          来自单位 fromUnitFactor(可能总是 1) 到单位 ToUnitFactor(从 fromUnit 到 toUnit 所需的一切)

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

          这样做的最大问题是您需要在表格中使用 from 和 to 的所有组合。

          有意义吗?

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-01-31
            • 1970-01-01
            • 1970-01-01
            • 2021-01-22
            • 2023-03-15
            • 1970-01-01
            • 2015-05-10
            • 1970-01-01
            相关资源
            最近更新 更多