SQLを学ぶ:マイクロソフトSQL Server



この最後のエントリでは、どのような結合作業がどのように動作しているかを再確認したいと思います.
しかし、時々それは十分でないかもしれません.場合によっては、1つのテーブルからレコードをプルしてから、他のテーブルからレコードを空の値で結合する場合があります.

Thats sounds confusing so lets dive into SSMS to make it more clear.


順序を付けたすべての顧客を引き上げるSQL質問を書きましょう.任意の数の注文.私たちは販売を使用します.salesorderヘッダーと売上高.カスタマーテーブル.
販売.顧客は顧客と販売のリストです.SalesOrderHeaderはすべての順序のリストです.
このクエリを次のように構築します.
Select * from Sales.Customer a
join Sales.SalesOrderHeader b
on a.CustomerID = b.CustomerID

I made use of aliases to make it a little easier to construct this query statement, by giving Sales.Customer an Alias of a and Sales.SalesOrderHeader the Alias of b


基本的には、一致するCustomerIDに基づいて2つのテーブルに参加します.

このステートメントからどのような結果が返されたかに注目してください.31465トータル行.
この結果を示すために、問い合わせの中にコメントを追加します.コメントはSQLによって評価されません.これは通常、プログラマや開発者として、他のプログラマと我々の将来のselfsに我々のコードを返すときに我々の意図を説明するために使用されます.
SQLでコメントを書く方法は、2つのダッシュでコメントを修正することです.
-- total (comment)
例えば
-- total number of records
もし私たちがすべての顧客のリストを取得したい場合は、彼らが注文をしたかどうかは、この結果セットの場合、彼らは注文をしていない場合は、すべての売上高はnullまたは空になります設定します.

左側
これを達成するためには、外部結合を書く必要があります.外部結合を書くには、どのテーブルからどのデータを取得するかを決める必要があります.我々はすべてのデータを取得したいテーブルを指定します.
Select * from Sales.Customer a
left join Sales.SalesOrderHeader b
on a.CustomerID = b.CustomerID
上の声明では、左は販売を指します.カスタマーテーブル.これは、販売からすべてのデータを取得したいということです.顧客と売上高の任意の一致するレコードがある場合.SalesOrderHeaderテーブルはこれらのレコードを返します.それ以外の場合はそれらのレコードをNULLとします.



右のメソッドは、クエリ文の終わりにテーブルを参照することを除いて、左とまったく同じように動作します.上の例では販売を参照してください.SalesOrderHeaderテーブル.

それは学ぶSQLのこのシリーズを締結します.私は2020年に初めて聞いたとき、SQLに脅かされたと言わざるを得ない.
この旅をした後、私は判断の私のエラーを実現し、私は非常に簡単に、彼らは多くの方法でJavaScriptに似ているので、感謝のようにすべての方法ではなく、概念を理解して見つけた.
もう一度、私はあなたがこのシリーズを楽しんで、素晴らしい2022を望みます.ナマステ.