【问题标题】:Crystal Reports - Return list of products with common set of ingredientsCrystal Reports - 具有常见成分的产品的返回列表
【发布时间】:2012-05-20 09:52:31
【问题描述】:

在 Crystal Reports 11 中,我需要创建一个报表,该报表返回一个表中的所有产品,这些产品具有一组共同的用户参数中列出的成分。此外,用户需要能够从一个请求到下一个请求输入不同数量的成分。例如:

我们有 Product_1,它由成分_1、成分_2 和成分_3 组成。
我们有 Product_2,它由成分_1、成分_5、成分_6 组成。 我们有 Product_3,它由成分_1、成分_2 和成分_7 组成。

最终用户需要能够放入多达 3 种成分,并查看所有共享这些成分的配方。

在查询 1 中,他将输入 Ingredient_1,所有三种产品都应返回完整的成分列表,而不仅仅是成分_1。

在查询 2 中,他将输入应返回产品 1 和 2 的成分 1 和成分 2,并再次返回它们的完整成分列表。

如果产品使用了用户输入的所有成分,我需要知道如何退回产品中的所有成分,而不排除该产品中的其他成分。我还需要确保返回数据库中使用这些特定成分的每个产品。

【问题讨论】:

  • 数据模型具体是什么样的?用户输入的字符串是否与加入的成分表相匹配?
  • 你使用什么框架和语言?

标签: crystal-reports formula


【解决方案1】:

这听起来更像是一个查询/存储过程问题,而不是 Crystal Reports 中的问题。

你的选择语句可以是这样的:

DECLARE @ingredient1 VARCHAR(50),
  @ingredient2 VARCHAR(50),
  @ingredient3 VARCHAR(50)


SELECT *
FROM products 
WHERE fld_ProductID IN (SELECT DISTINCT p.fld_ProductID
                        FROM products p
                        WHERE p.fld_formulaID IN (SELECT DISTINCT fld_formulaID 
                                                    FROM formulas 
                                                    WHERE fld_ingredient = @ingredient1
                                                        OR fld_ingredient = @ingredient2
                                                        OR fld_ingredient = @ingredient3)
                        )

这将选择具有其中一种成分的所有配方 ID。然后它将获取具有这些公式ID 之一的所有产品的列表,最后它将选择所有产品。这样,如果同一个产品有多个 formulaID,它将全部选中。

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2017-02-04
    • 1970-01-01
    • 1970-01-01
    • 2013-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多