2

私はこの答えに従おうとしました

しかし、私の場合、同じテーブルの他のフィールドで使用される 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
4

2 に答える 2

1
select a.name, b.name, c.description from customer a
left join customer b on a.realty_firm = b.customer_id
left join category c on b.category_id = c.category_iD
 where a.category_id = 1;

出力

AgentName1 |    BrokerName1 | Broker
AgentName2 |    BrokerName1 | Broker
AgentName3 |    BrokerName1 | Broker
AgentName4 |    BrokerName1 | Broker
AgentName5 |    BrokerName2 | Broker
于 2013-09-16T13:40:51.957 に答える