0

ここで学生の質問を繰り返します。ある種の説明をしましたが、より良い、より明確な説明があることを願っています。

自己結合は、テーブルの 2 つのエイリアスで行われます。

SELECT parent.Name, child.Name
FROM Person parent
INNER JOIN Person child ON parent.Id = child.ParentId

しかし、それは私たちが物事を複雑にしているように聞こえます. そう:

(1) エイ​​リアスは本当に必要ですか? なんで?

(2) 技術的には、エイリアスを 1 つだけ使用することも可能です。オンライン、教科書、チュートリアルのすべての例で、常に 2 つのエイリアスが使用されているのはなぜですか?

4

1 に答える 1

6

1) はい、少なくとも 1 つのエイリアスが必要です。それ以外の場合、どのテーブルバージョンがどれであるかをどのように知ることができますか?

2) エイリアスを 1 つだけ使用できます。2 つが厳密に必要というわけではありません。ただし、2 つのエイリアスを使用すると、ほとんどの場合、1 つのエイリアスよりも明確になります。

一目で分かりやすいのはどっち?

SELECT parent.Name, child.Name
FROM Person parent
INNER JOIN Person child ON parent.Id = child.ParentId

または

SELECT Person.Name, child.Name
FROM Person
INNER JOIN Person child ON Person.Id = child.ParentId

最初のものは意図をよりよく示しています。


ところで、おそらく列にも別名を付けたいと思うでしょう。結果に同じ名前を持つ 2 つの列は問題ありませんが、混乱を招く可能性があり、結果の行をクライアント コード内の何らかの連想コンテナーに入れようとすると、壊れてしまいます。したがって、たとえば、クエリのより良い静止バージョンは次のようになります。

SELECT parent.Name ParentName, child.Name ChildName
FROM Person parent
INNER JOIN Person child ON parent.Id = child.ParentId
于 2012-11-29T10:06:23.340 に答える