私の同僚から質問がありましたが、それは愚かな質問かもしれませんが、私はその場で答えを出すことができませんでした。エイリアスはどのようにSQLで動作しますか?
私はそれはそれは両方のテーブルの上に見つけることができることは明らかだ次のクエリ
SELECT sc.custid, contactname, orderid, empid
FROM Sales.Customers sc
INNER JOIN Sales.Orders so ON sc.custid = so.custid;
custid
を持っています。 contactname
はSales.Customers
テーブルに属し、orderid
およびempid
〜Sales.Orders
に属します。ここまでは順調ですね。
ステートメントの先頭にエイリアスを入力すると、名前があいまいであるというエラーが表示されます。これは両方のテーブルに存在するため正しいものです。しかし、エイリアスを使用してcustid
を取得するテーブルとそのテーブルを定義すると、その後、他の3つのカラムにエイリアスを使用する必要がなくなり、クエリが正常に完了しました。どうして?
私はSQLの初心者ですので、それは来るように質問を扱います。ありがとう
他の3つの列名があいまいでない場合、それらを明確にする必要はありません。 –
Bobという名前の2人の友達がいるとします。 1つはBob Smith、もう1つはBob Fooです。ボブの両親の友人に「一度ボブと私...」と言うことで話を説明しなければならない場合、彼らはどのボブに尋ねるでしょうか?しかし、あなたが「一度ボブ・スミスと私は...」と言ったら、彼らはあなたが話していることをすぐに知るでしょう。エイリアスは、同じ列名を持つテーブル内の関連付けを明確にすることです。 – Simon
@cdrrrrr、私はあなたがテーブル名またはエイリアスで複数テーブルのクエリで列名を修飾する習慣を作ることをお勧めします。そのため、基礎となるスキーマに精通していないユーザーにとっては、クエリを理解しやすく維持しやすくなります。 –