sql获取从两个表连接的两列的计数

时间:2016-12-21 10:24:47

标签: mysql sql

按照it's quite OK now之前的问题,我想在结果表中添加一个额外的列。 此列将保留ID的出现频率。 结果将是这样的:

ID  Company         status          Freq      
---------------------------------------
A10     company10   FOUND           1
A3      company3    FOUND           2
A5      company5    FOUND           3
A7      company7    FOUND           2
A8      company8    FOUND           3
B100    B100        NOT FOUND       1
B200    B200        NOT FOUND       1
B400    B400        NOT FOUND       1

关于如何获得频率计数的一些解释:
计数是表1中{1}}列中ID出现次数的总和加上id列中相同name的相应id出现的次数table1。
或者在另一种情况下,name在table2中有一个对应的name,然后如果该id在table1中可用,那么我们将添加到该现有id的计数,如果没有,我们包含该id并计算table1中相应名称的出现次数。
和另一种情况,如果找不到该名称的相应ID,则计算表1中该特定名称的出现次数。

例如,A3在table1中出现两次,而table1的column2中的所有名称都没有相应的ID为A3,因此A3的计数为2。 另一个例子:A5在table1的column1中出现一次,但是在table2中它的对应名称是B2,它在table1的第二列中出现两次,所以我们添加这两个计数,并且A5得到3.
另一个例子,我们在table1中没有A10,但它出现在结果中,因为column2-table1中的一个名称是B6,其对应的ID为A10,所以相反为B6创建一个条目并添加其计数,我们从table2获取id并添加到其计数中 另一个例子,如果名称在table2中没有相应的id,比如B400,那么我们将它作为条目放在结果表中并计算它在table1中出现的次数,并在这个例子,它发生过一次。
这里是Giorgos's answer,但没有计数。

以及关于如何构建当前结果表的更多解释: 我们从table2获取了table1中唯一ID的列表以及它们对应的table2。我们对table1的第二列进行类似的查询:我们在table2的第二列中查找table1中第二列的值,即name,如果我们找到它,那么我们从table2获得相应的id和company,但如果该ID已经存在于我们之前的查询中,那么我们就删除它,不需要重复它。第三,如果我们在table2的名称中找不到table1中name的值,那么我们就没有任何相应的id或公司,所以我们将该名称值都归为id和company。一般来说,如果我们从table2中找到table1中的id和名称,那么我们给它们的状态为FOUND,如果没有,则找不到。

和sql查询用于获取当前结果表:

id

0 个答案:

没有答案