私はこの答えに従おうとしました
しかし、私の場合、同じテーブルの他のフィールドで使用される pk id を使用しています
サンプル テーブル:
1. お客様
田畑:
Customer_ID、Name、Category_ID、 Realty_Firm
2.カテゴリー
田畑:
カテゴリ ID、説明
カテゴリのサンプル データ:
Category_ID | Description
1 | Agent
2 | Broker
顧客のサンプル データ:
Customer_ID | Name | Category_ID | Realty Firm
1 | AgentName1 | 1 | 6
2 | AgentName2 | 1 | 6
3 | AgentName3 | 1 | 6
4 | AgentName4 | 1 | 6
5 | AgentName5 | 1 | 7
6 | BrokerName1 | 2 | null
7 | BrokerName2 | 2 | null
注 1: Realty_Firm フィールド データは、Broker Customer ID から取得されます (6 と 7 は、Category Broker の ID です)。
注 2 : Realty_Firm フィールドは、選択したカテゴリが Agent(1) の場合にのみ必要です。
質問:顧客をカテゴリ別にグループ化するクエリを作成するにはどうすればよいですか? 簡単な作業のように思えますが、問題はどうすれば Realty_Firm フィールドを同じテーブルの Customer_ID に結合できますか?
Select Cat.Description, Custom.Name as Broker, Cust.Name as Agent From Customer as Cust
Inner Join Category as Cat ON Cust.Category_ID=Cat.Category_ID
INNER JOIN Customer as Custom ON Custom.Customer_ID=Cust.Realty_Firm
上記のクエリには、別のエイリアスを持つ Customer テーブルへの二重結合がありますが、Realty_Field 値 (ブローカー)を持つ行のみが返され、エージェントのレコード全体がブローカーに属しているわけではありません。
クエリ出力の例 (簡単に参照できるように、またサンプルのために、ID ではなく redable レコードを示しています):
Description | Broker | Agent
Broker | BrokerName1 | AgentName1
Broker | BrokerName1 | AgentName2
Broker | BrokerName1 | AgentName3
Broker | BrokerName1 | AgentName4
Broker | BrokerName1 | AgentName5