2016-05-02 1 views
1

今日私はいくつかの統計を試してみるためにTFSデータベースを突き抜けていました。私はtbl_Numberというテーブルを見つけました。この表には1つの列Numberが含まれており、すべての値はちょうど1〜500,000の値です。あなたは、クエリからのスクリーンショットで見ることができるような値のどれも私がLinqPadに走った、リスト内のそれぞれのインデックスと異なっていない:数字が1〜50万のSQLテーブルを作成する利点は何ですか?

enter image description here

Tbl_Numbers.Max(x => x.Number).Dump(); //max value 
Tbl_Numbers.Count().Dump(); //number of entries 
var asList = Tbl_Numbers.ToList(); 
asList.Where(x => asList[x.Number - 1].Number != x.Number).Any().Dump(); 
//False shows that every entry matches the value at its ordinal location in the list 

私の質問は:どのようなの使用は希望テーブルは?参照番号の1つが何らかの理由で変更する必要がある場合に備えますか?この表から番号を特定する唯一の方法は、同じ番号を使用することです。したがって、この表の使用方法はわかりません。

私はこの質問が推測である答えにつながる可能性があることを認識していますが、私はここで使用されていることに気付いていないプログラミング主体があるかどうかを知りたいと思うでしょう。

+0

多分興味深いですか? http://stackoverflow.com/a/29969124/3184785 'リスト内の整数位置から計算できるもの'のリストを生成するための '十字結合'に便利です。 –

+0

@RyanVincentああ、SQLステートメントを書くのにどのように役立つのか、リンクのおかげです。 – DLeh

+0

データベースやテーブルの作者ではありませんが、なぜこれが行われたのかはわかりません。 – JonH

答えて

3

OUTER JOINSで使用できるのは、その番号に関連するデータがなくても、指定した範囲内のすべての数値を常に取得することです。

たとえば、3,4または5個の商品を最後の注文で購入した顧客の数を返したいとします。しかし、実際には、4つの製品を購入した顧客はいません。データに対してカウントクエリを実行しただけでは、4つの製品を購入した顧客に対して行が表示されませんでした。

しかし、自分の数値テーブルとLEFT JOINを自分のデータに照会すると、クエリの作成方法に応じて、数字4と0またはNULLがカウントされます。

ところで、人はまた、しばしば、日付表でこれを行います。

関連する問題