两个表,两个要加入的多个字段,单个输出:如何?

时间:2015-07-30 19:32:49

标签: mysql ms-access

我有两张桌子。父母包含客户数据。孩子由购买的产品组成。问题是我有多种形式的数据可以使这两个表格生效,但我没有确定的IDer。具体做法是:

表1为Customer Name, Customer Number, Telephone 1, Telephone 2, Telephone 3, Telephone 4,d Email

表2为Telephone 1, Telephone 2, Email, Product

我需要编写一个查询来将这两者合并在一起。我甚至不知道如何在逻辑上做到这一点。我的最终目标是尽可能多的产品与尽可能多的客户匹配。

我当时认为表1会比较电话1和表2:电话1。如果匹配,则匹配客户编号和产品。

Then Table 1:Telephone 1 to Table 2:Telephone2.  
Then Table 1:Telephone2 to Table 2:Telephone1.  
Then Table 1:Telephone2 to Table2:Telephone2.  
Then Table1:Telephone3 to Table2:Telephone1. 
Then Table1:Telephone3 to Table1:Telephone2.  
Then Table1:Telephone4 to Table2:Telephone1.
Then Table1:Telephone4 to Table2:Telephone2.
Then Table1:Email to Table2:Email.

显然,我也想避免重复。必须有一种比编写9个单独查询更简单的方法,对吧?我可能只是太老了,无法弄明白。如果有人可以提供帮助,那就太棒了。

如果可能的话,我更喜欢在Access中执行此操作,但我们也可以在SQL中执行此操作。

请帮忙!谢谢!

目前,正在尝试此操作,它会返回使用已购买产品设置的正确客户ID。

SELECT DISTINCT Customer_ID
FROM customerinfotest T1
INNER JOIN websalestest T2 ON
 T2.Phone IN 
 (T1.Telephone_1,T1.Telephone_2,T1.Telephone_3,T1.Telephone_4)
 OR
 T2.ShippingPhone IN 
 (T1.Telephone_1,T1.Telephone_2,T1.Telephone_3,T1.Telephone_4)
 OR
 T2.Email = T1.Email

现在,如何设置查询结果的格式,以便获取客户信息并总结其总购买量?

谢谢!

1 个答案:

答案 0 :(得分:1)

我认为这可能是一个好的开始。您查看产品表中的Telephone 1是否是客户表中的4个电话号码之一,或者Telephone 2是否是其中之一。您还可以检查电子邮件是否匹配:

SELECT DISTINCT [Customer Name], [Product]
FROM Table1 T1
INNER JOIN Table2 T2 ON 
(
 [T2].[Telephone 1] IN 
     ([T1].[Telephone 1],[T1].[Telephone 2],[T1].[Telephone 3],[T1].[Telephone 4])
 OR
 [T2].[Telephone 2] IN 
     ([T1].[Telephone 1],[T1].[Telephone 2],[T1].[Telephone 3],[T1].[Telephone 4])
 OR
 [T2].[Email] = [T1].[Email]
)