2012-05-11 3 views
2

Crystal Reports 11では、ユーザパラメータに共通にリストされている成分のセットを持つテーブル内のすべての商品を返すレポートを作成する必要があります。加えて、ユーザは、1つの要求から次の要求まで様々な数の成分を入力することができる必要がある。例:Crystal Reports - 共通の成分セットを持つ製品のリストを返す

Product_1には、ingredients_1、ingredient_2、およびIngredient_3が含まれています。
商品_2は、成分_1、成分_5、成分_6で構成されています。 私たちは、成分__1、成分__2、成分_7で構成されるProduct_3を持っています。

エンドユーザーは、3つまでの成分を入れ、これらの成分を共通に持つすべての配合を見ることができる必要があります。

質問1では、彼はIngredient_1に入れて、3つの製品すべてが、原料_1だけでなく、完全な成分リストとともに返されるべきです。

クエリ2で、彼は、成分1と成分2を入れて、製品1 & 2を返すべきであり、再び完全な成分リストを返す。

ユーザーが入力したすべての成分を使用し、その製品の他の成分を除外することなく、製品内のすべての成分を返す方法を知る必要があります。また、これらの特定の成分を使用するデータベース内のすべての製品が返されるようにする必要があります。

+3

データモデルは特にどのように見えますか?結合された原料表と一致させるために文字列を入力するユーザーはいますか? – Ryan

+0

あなたはどんなフレームワークと言語を使用していますか? – HichemSeeSharp

答えて

0

これは、Crystal Reportsのクエリー/ストアドプロシージャの問題とよく似ています。

SELECT文は次のようになります

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を選択します。そして、それらのformulaIDの1つを持つすべての製品のリストを取得し、最後にすべての製品を選択します。同じ製品に複数のformulaIDがある場合は、すべてを選択します。

これが役に立ちます。

関連する問題