私は1つのxから多くのyのSQLサーバーデータベースに1対多のリレーションシップを持っています。親ローが重複しないSQLジョイン
私は2つのテーブルを結合するときのように、私はデータを取得します。それに関連付けられた2つの子供の列があるので、私は二回xデータを取得
1x 1x 1y 1y
1x 1x 2y 2y
。
問題は、両方のテーブルにあるカラムで合計を実行する必要があることです。それぞれのユニークなローの列を1回だけ合計したい場合があります。したがって、私はこのようなデータがほしいと思う:
これはサブクエリでは非常に簡単に行うことができますが、パフォーマンス上の問題があります。
ありがとうございました。
編集 -
誰もがより具体的な例望んでいるので:
をお店のいくつかの種類に発注の非常に大きなテーブルがあります。 これらの注文には割引が適用されます。複数の注文に割引を適用できます。 各注文には、トップレベルの税、配送、およびディスカウントの合計列があります。 各注文には、子供注文品のコレクションがあります。これらの受注明細には、品目価格と数量が販売されています。
各ディスカウントについて、合計売上高が必要です。 これは、ディスカウント税をかけた各注文の合計+各ディスカウント・シップに置かれた各注文の合計+各注文の合計注文数量*数量 - ディスカウント・トータルの合計です。
私は合計する必要がある2つのレベルがあります。注文のものと注文アイテムのもの。
テーブルは変更できません。
サブクエリで正しい数値を取得しましたが、合計の列をソートする必要があり、非常に遅いことがわかりました。
割引による現在のモデルグループが適用され、注文と注文アイテムが結合されます。非常に効率的ですが、1つ以上の子がある注文列の複製を返します。
他のDBMSについてはわかりませんが、MySQLは 'COUNT(DISTINCT somefield)'をサポートしていますので、あなたはダストを数えません。 –
フィールドは区別できない場合があります(IDとは別) – JonathanDHope
他の制約なしでこれらの列に対して合計を実行する必要がある場合、なぜそれらを1つのクエリで結合しますか? *さらに制約がある場合は、それらを質問に追加してください。 –