将数据属性从另一个表Mysql移过来

时间:2019-11-30 19:11:32

标签: mysql sql database join foreign-keys

我有这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   |
|---------------------|    |---------------------|

样本数据:

enter image description here

enter image description here

解决此问题的最佳方法是什么?

我现在有这个查询

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');

除了返回表中的客户名称之外,它完全可以满足我的需求,这样我就可以匹配每个经销商的客户销售额。想法?

1 个答案:

答案 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字段进行显示。