2017-06-30 8 views
0

が存在する場合は、2番目のテーブルからデータを取得する方法のSQLServer ....C#と私はしようとしてるかの簡単でより効率的な方法がある場合は、いくつかのアドバイスをした後

私は、製品データを持つテーブルがありますsqlserverでasp.net C#でフロントエンドを実行すると、excel、txtファイルのオプションにエクスポートし、APIに公開します。

は、今私は

ので、製品のテーブルには、「顧客1」のため、その後

PT_PRODUCT|PT_DESC    |PT_SIZE 
ABC123 |Super Cool Ice-Cream |small 

似ていますが、我々は特定の顧客のためのさまざまな形式の製品説明などの特定のフィールドを保持することで構築する必要があります製品の説明は、「氷のクールLollypop」にする必要がある

私は自分のアプリケーションに「製品」のクラスを作成し、メインテーブルの値で、それを埋めるために行っていた、

次のようになり第二のテーブル、

CUST |PRODUCT | FIELD_ID | FIELD_VAL 
CU1 |ABC123 |PT_DESC |Ice Cool Lollypop 

を照会し、

select * from table2 where cust='CA1' and product='ABC123' 

for(int i=0;i< ds.tables[0].rows.count;i++) 
{ 
    switch(ds.Tables[0].Rows[i]["FIELD_ID"]) 
    { 
    case "PT_DESC": 
    ClassProd.DESC = ds.Tables[0].Rows[i]["FIELD_VAL"); 
    //and so on updating the class 
    } 
} 

APIを経由して、顧客のサイトを更新するために使用更新クラスまたはExcelのectにエクスポートするようなものを実行します、

わずかな曲線ボールの場合、顧客データによって上書きする必要がある約20以上のフィールドが存在する可能性があります。また、このルートを下って、オーバーライドできるフィールドを指定します。そこにあった元のSQL Selectでこれを実行します。

+0

はあなたの二つの表と例については、データのいくつかの行を追加することができますオーバーライドしようとしている20以上のフィールドのうち、いくつかの行のサンプル結果を使用して、達成しようとしていることを明確にします。 –

+0

ようこそスタックオーバーフロー! [質問する方法](https://stackoverflow.com/help/how-to-ask)をご覧ください。 – TomServo

+0

@AlexanderHiggins私はまだ2番目のテーブルを持っていないので、私は望む方法を自由に作成することができます。私は来週私の机に戻ったときに正義解答をしようとしています –

答えて

0

ストアドプロシージャを作成し、顧客のカスタム製品を入手するためにC#を実行する必要がないことを忘れてしまいます。

この左は、Product IdとCustomer IdのCustomerProductsテーブルを結合します。 NULLの場合は、顧客の製品説明を見つけられなかったので、Productsテーブルのデフォルトのものを使用します。 NOT NULLの場合、CustomerProductsに顧客製品の説明があり、その代わりにその製品の説明が使用されます。

私は正確にあなたのスキーマを知らないが、これは要旨次のとおりです。次に

CREATE PROCEDURE GetCustomerProducts 
(
    @CustomerId VARCHAR(255), 
    @ProductId VARCHAR(255) 
) 
AS 
BEGIN 
SELECT PRODUCT 
    ,FIELD_ID 
    ,CASE 
     WHEN cp.FIELD_VAL IS NOT NULL 
      THEN cp.FIELD_VAL 
     ELSE p.FIELD_VAL 
     END AS FIELD_VAL 
FROM Products p 
LEFT JOIN CustProducts cp ON cp.PT_PRODUCT = p.PT_PRODUCT 
    AND cp.CUST = @CustomerID 
WHERE p.PT_PRODUCT = @ProductId 
END 

EXEC GetCustomerProducts @CustomerId = 'CU1', @ProductId = 'ABC123'

+0

私はアイデアが好きです。来週、私が机に戻ってきて、歓声を上げようとします。 –

関連する問題