我需要在两个不同的字段上加入两个表。我有这样的表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是从XLS报告加载的,表2是来自数据库的数据,它反映了具有许多状态数据的客户事务。我必须检查数据库中是否存在来自XLS的行,然后加载其他状态数据。当XLS中的行没有关于数据库的对应数据时,我必须生成一个报告。
如何实现这个JOIN,这只能用SQL吗?
答案 0 :(得分:0)
理解这一点的一种方法是弄清楚每个表的确切代表。这两个表似乎代表相同的东西,一行代表你可能称之为购买的东西。为什么有两个单独的表呢?也许第二张表对每次购买都有更深入的了解?就像jhon买的产品100一样,首先是'nok'然后'ok'?是这样,那么第二个表的关键(使表唯一的原因)就是所有三个字段。 您仍然只加入匹配的两个字段,但如果有两行具有相同的唯一键,则不能指望唯一性。 有时可以帮助在表上创建其他索引,以查看真正独特的内容。
答案 1 :(得分:0)
您可以使用下面的sql在MS SQL中完成此操作。不确定SQLite是否支持此功能。
select a.*, c.*
from table2 a, ( select min(key) key, productid, customer
from table1
group by productid, customer
) b,
table1 c
where a.productid = b.productid
and a.customer = b.customer
and b.key = c.key