2017-03-16 4 views
1

以下のクエリでは、Qty でアイテムの詳細を取得し、レート(qtyおよびレートはビジネスロジックに基づいて計算されるため、サブクエリまたは凝集体)。SQLクエリまたはUIコードの金額(Qty * Price)を計算する

SELECT ItemID, 
     ItemName, 
     (... 
     ... 
     ) AS ItemQty, 
     (.... 
     .... 
     ) AS ItemPrice 
FROM .... 

今私は、Amount(すなわちItemQty * ItemPrice)でグリッドにこの内容をリストする必要があります。

Sample Output 
------ 
ItemId ItemName ItemQty ItemPrice Amount 
1  ABC  10.0 22.5  225.0 
2  PQR  12.35 156.5  1932.775 

IはAmountItemQty * ItemPrice)を計算するための2つのオプションがあり

  1. SQLクエリの量を計算し、それ自体

    値 または外側の選択を乗算するために再び全体サブクエリを使用して同じを計算するクエリ

  2. UI /コード部分を使用してItemQty * ItemPriceを計算するグリッドにデータをバインドします。

私はこれに従うことができますか?

+0

上記のクエリは、シナリオを示す単なるサンプルです。 –

+0

サンプルデータとあなたが試した質問がより役に立ちます! – Susang

+0

@Suraz、thanx、サンプル出力が追加されましたが、質問は簡単ですが、SQLクエリ自体またはUIコード部分のAmount(Qty * Rate)はどこで計算できますか? –

答えて

1

ロジックをUIで分離する必要があります。

Is SQL code faster than C# code?

このリンクは、あなたの質問のためによく説明しています。

希望すると便利です。

+2

@ abdul-rasheed、与えられたリンクで私は "Aristos"と答えました、これは私が言いたいものです。 – KumarHarsh

+0

@KumarHars、あなたの提案に感謝、私は答えにミックスを得たので、私はすべての答えとソリューションを締結するためのリンクを読むためにいくつかの時間を必要とする –

0

SQLに渡すと高速になります。 UIスレッドを渡すと、ブラウザはベースの行数を固定することがあります。 サブクエリは使用せず、常にSQL結合を試してください。

SELECT ItemID, 
     ItemName, 
     ItemQty, 
     ItemPrice 
     (ItemQty * ItemPrice) as Amount 
FROM table 

SELECT ItemID, 
      ItemName, 
      table1.ItemQty, 
      table2.ItemPrice 
      (table1.ItemQty * table2.ItemPrice) as Amount 
    FROM table inner join .... 
      table2 inner join .... 
      table3 

と仮定すると、table1には数量の詳細があり、table2には価格の詳細があります。

0

qtyと価格がグリッドに表示されるため、UI /バックエンドコードの金額を計算する必要があります。 SQLスクリプトのパフォーマンスに影響を与えずに、量の計算を伴うビジネスロジックを適用することができます。

2

コードでプロパティを使用している場合は、useプロパティを使用して計算します。 あなたのクエリにも依存しますが。

i)1つのクエリが計算されず、結果セットの戻り値が200であるとします。

ii)計算されたクエリは100行を返します。

オプションi)計算に追加情報が必要なため、100行が余分です。

このシナリオでは、計算はproc自体で行う必要があります。

両方のオプションが100行を返した場合、UIの計算部分を実行します。

+0

あなたの提案は、UI部分(レコード結果セットの戻り値は常に両方のケースで同じになり、計算のための追加レコードはありません)。 –

+2

はい。優先する方法はプロパティを使用するため、同じコードが複数の場所で再利用されます。 – KumarHarsh

関連する問題