【发布时间】:2012-04-21 16:42:19
【问题描述】:
我需要连接两个不同字段的两个表。我有这样的表1:
key productid customer
1 100 jhon
2 109 paul
3 100 john
表 2 具有相同的字段,但附加数据必须与第一个表相关
key productid customer status date ...
1 109 phil ok 04/01
2 109 paul nok 04/03
3 100 jhon nok 04/06
4 100 jhon ok 04/06
两个“关键”字段都是自动递增的。问题是我的关系字段在结果中重复了多次,我需要生成一对一的关系,这样表 2 中的一行必须与表 1 中的一行仅关联一次。
我在 (customer=customer 和 productid=productid) 上进行了左连接,但关系出现重复,平板 2 中的一行与表 1 的行相关联很多次。
为了澄清事情......
我必须交叉检查两个表,表 1 是从 XLS 报告中加载的,表 2 是来自数据库的数据,它反映了具有许多状态数据的客户交易。我必须检查数据库中是否存在来自 XLS 的行,然后加载其他状态数据。当 XLS 中的行在数据库中没有对应数据时,我必须生成报告。
这个JOIN怎么实现,只用SQL可以吗?
【问题讨论】:
-
假设您想从 table2 中取出两行(key=3 和 key=4)中的一个,用于 key=1 的 table1 记录:您选择哪一个?为什么?
-
两种都可以,条件是(productid=productid and customer=customer),但是是一对一的。例如,在我的示例中,table2-key3 可能与 tablet1-key1 和 key3 相关,但我的要求是只关联一次,因此 key1 或 key4 可以是一次,但只能关联一次。
-
@Marco 的问题很重要。而且,由于 table1 与 table 2 具有相同的信息(这可能是糟糕的架构设计),你为什么要关心 table1 呢?
-
我必须从表 1 到表 2 交叉检查信息,并从表 2 加载其他数据。
-
你能提供一个你正在寻找的结果的例子吗?
标签: sql sqlite join one-to-one