我有这3个未通过外键链接的镜头。 (下面的一些示例数据)。
经销商为客户分配了客户编号。但是,另一个经销商可以有一个具有相同编号的客户,但他们不是同一位客户。
|---------------------| |---------------------| |---------------------|
| DISTINCT_DEALER | | DISTINCT_CUSTOMER | | CUSTOMER_SALES |
|---------------------| |---------------------| |---------------------|
| d_id (pk) | | d_id | | d_id |
|---------------------| |---------------------| |---------------------|
| dealer_address | | dealer_name | | customer_number |
|---------------------| |---------------------| |---------------------|
| dealer_city | | customer_number | | total_sales |
|---------------------| |---------------------| |---------------------|
| dealer_state | | customer_name |
|---------------------| |---------------------|
| dealer_zip | | customer_email |
|---------------------| |---------------------|
样本数据:
解决此问题的最佳方法是什么?
我现在有这个查询
select cs.d_id, cs.customer_number, cs.total_sales from cs_sales cs where cs.d_id in
(select dc.d_id from dcust dc where dc.d_id = 'A00007');
除了返回表中的客户名称之外,它完全可以满足我的需求,这样我就可以匹配每个经销商的客户销售额。想法?
答案 0 :(得分:0)
尝试将子查询放在from子句中,然后添加另一个字段,如下所示:
select cs.d_id, cs.customer_number, cs.total_sales, subquery_dc.customer_name
from cs_sales cs,
(select dc.d_id, dc.customer_name from dcust dc
where dc.d_id = 'A00007') subquery_dc
where cs.d_id in subquery_dc.d_id;
这将创建一个具有d_id的虚拟表,并从dcust表中提取customer_name字段。然后,您可以像以前一样加入这些特定记录,还可以拉回customer_name字段进行显示。