2

列名があいまいなクエリで、いくつかのテーブルを左結合する必要があります。

ListingCategory_Listings:

ID | ListingCategoryID | ListingID | ..

SiteTree_Live:

ID | ClassName | タイトル| コンテンツ| ..

ListingCategory:

ID | IconID

ファイル:

ID | ClassName | 名前| タイトル| ファイル名| ..

私は質問があります:

SELECT * FROM ListingCategory_Listings 
LEFT JOIN Listing ON ListingCategory_Listings.ListingID = Listing.ID 
LEFT JOIN SiteTree_Live ON Listing.ID = SiteTree_Live.ID 
LEFT JOIN ListingCategory ON ListingCategory_Listings.ListingCategoryID = ListingCategory.ID 
LEFT JOIN File ON ListingCategory.IconID = File.ID

リストとリストのカテゴリデータの両方がSiteTree_Liveテーブルに保存され、レコードが返されると、明らかに、タイトル、ID、コンテンツ、およびその他のあいまいなフィールドがタイトル、ID、コンテンツの見出しの下に返されます。

リストタイトルとリストカテゴリタイトルの両方、およびその他の特定の情報にアクセスする必要があります。データが異なるテーブルに保存されている場合は、select Listing.Title AS lTitleを使用できますが、この状況で同様のことを行うにはどうすればよいですか?

4

2 に答える 2

18

列にエイリアスを付けて、異なるラベルを付ける必要があります。
常に必要なフィールドのみをSELECT句に入れ、を使用するのではなく、それぞれを個別にリストする必要があります*
良い習慣はまた、各テーブルに短いエイリアスを与えることを指示します。

SELECT L.Title Listing_Title, LC.Title ListingCategory_Title,
       ... all your other columns ...
FROM ListingCategory_Listings LCL
LEFT JOIN Listing L ON LCL.ListingID = L.ID 
LEFT JOIN SiteTree_Live STL ON L.ID = STL.ID 
LEFT JOIN ListingCategory LC ON LCL.ListingCategoryID = LC.ID 
LEFT JOIN File F ON LC.IconID = F.ID
于 2012-10-14T23:10:40.897 に答える
1

列名をALIASにするには、前の情報が正しくない可能性があることをお勧めします。

COLUMNALIASの適切な構文は次のとおりです。

SELECT column_name AS alias_name
FROM table_name;

COLUMN ALIASでは、COLUMNエイリアスの割り当ては、適切なCOLUMN名の横で宣言されます。

TABLEALIASの適切な構文は次のとおりです。

SELECT column_name(s)
FROM table_name AS alias_name;

TABLE ALIASでは、TABLEエイリアスはステートメントのSELECT部分​​で選択されている列の横に配置されます。TABLE ALAISの割り当ては、ステートメントのFROM部分で行われます。

違いは、エイリアスの割り当てが、エイリアス化する必要のあるものの固有名の横で行われることです。

私はフレーザーの提供された例で練習を設定しました、そしてそれは私のために働きました。提供された答えは、COLUMN ALIASではなく、TABLEALIASについて話していたと思います。

TABLEまたはCOLUMNALIASが非常に短いため、コードの可読性が複雑になるALIASの使用法には同意しません。短くする必要があると思いますが、コードが保守目的で「自己文書化」されないほど短くはなりません。それが私の2¢の考えです!

于 2015-11-22T19:04:48.637 に答える