-1

我需要在两个不同的字段上加入两个表。我有这样的表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 吗?

4

2 回答 2

1

您可以使用下面的 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
于 2012-04-21T17:47:22.890 回答
0

理解这一点的一种方法是弄清楚每个表究竟代表什么。两张表似乎代表相同的东西,其中一行代表您可能称之为购买的东西。那为什么会有两个单独的表呢?也许第二张表会更深入地了解每次购买?就像 jhon 购买了产品 100 一样,它首先是“nok”,然后是“ok”?是这样,那么第二个表的键(使表唯一的)将是所有三个字段。您仍然只加入匹配的两个字段,但如果有两行具有相同的唯一键,则不能期望唯一性。有时在表上创建额外的索引会有所帮助,以查看真正独特的内容。

于 2012-04-21T16:55:51.017 回答