我在同一台服务器上有两个数据库。我们将调用第一个数据库ActiDB,第二个数据库DomiDB。在DomiDB上有一个名为DomiActV7的表,我们将对此进行研究。在DomiActV7中,有一列名为Domain,另一列为空,名为NumOfClicks
现在让我们看看另一个名为ActiDB的数据库。那里有两张对我们很重要的桌子。第一个表称为ActV7,第二个表称为SeV7
我需要做的是将另一个数据库(NumOfClicks)中的表SeV7(databaseActiDB)中的DomiDB合并到每个域中,并存储在名为NumOfClicks的空列中。
解释上面的文本“为每个域组合在一起”:在ActV7中有一个电子邮件列表,在DomiActV7中有一个域列表。域列表应该检查ActV7电子邮件并找到匹配的域(例如:test@test domain.com是我们的电子邮件,testdomain.com是我们的域)。查询在该电子邮件中找到了具有相同域的电子邮件,现在将使用将我们连接到同一数据库中名为SeV7的另一个表的行ID。我们可以从包含maching domain的电子邮件所在的行获取的ID称为SeV7OID。有了这个id,我们可以进入另一个表SeV7,在那里可以找到NumOfClicks
现在我们找到了NumOfClicks的方法,我们需要以某种方式将它们合并在一起,因为在前面的表中会有更多的具有相同域的电子邮件,这意味着它会给我们更多的id,从而导致更多的numofclick。我需要输入第1个表的点击次数,还有一个特定的数字65535应该被视为数字1。这已经在现有查询THO中实现。
所做的查询应该更新为在DomiActV7中查找ActV7,然后获取Emailid,使用该id,它应该找到numofclicks并将它们输入到另一个数据库中。我希望我没有把事情弄得太复杂,但我正在尽可能地解释情况。这里还有一个链接到一个类似的问题:Link to the post
每个列的数据类型都是varchar(50),只有SeV7OID和其他id是int。
此查询在SeV7OID中执行直接电子邮件搜索有什么问题这是错误的,因为缺少的电子邮件比那里多
是写在那张表上的,所以我们必须从SeV7
里面有所有的邮件。
需要修改的现有查询:
ActV7
示例表:domictv7 from domidb

+-----------------+-----------------+
|      Domain     |    NumOfClicks  |
+-----------------+-----------------+
|thisisadomain.net|                 |
+-----------------+-----------------+
| moreexamples.com|                 |
+-----------------+-----------------+
           ...............

actidb提供的actv7
+--------------------+-----------------+
|        Email       |  SeV7OID (key)  |
+--------------------+-----------------+
|[email protected] |        1        |
+--------------------+-----------------+
|[email protected]  |        3        |
+--------------------+-----------------+
            .............

来自actidb的sev7
+--------------------+-----------------+
|    SeV7OID (key)   |    NumOfClicks  |
+--------------------+-----------------+
|          3         |       41        |
+--------------------+-----------------+
|          4         |       22        |
+--------------------+-----------------+
|          1         |      65535      |
+--------------------+-----------------+
          ..................

最佳答案

这会产生预期的结果吗?

UPDATE d SET d.NumOfClicks = a.NumOfClicks
FROM DomiDB..DomiActV7 d JOIN
( SELECT d.domain,
    SUM(CASE
      WHEN e.NumOfClicks = 65535 THEN 1
     ELSE e.NumOfClicks END) AS NumOfClicks
FROM
    DomiDB..DomiActV7 d1
    JOIN ActIDB..Actv7 aa ON '@'+d1.domain = right(aa.Email,len(d1.domain)+1)
    JOIN ActIDB..SeV7 e ON e.SeV7OID = aa.SeV7OID
     group by d1.domain
)   a ON a.domain=d.domain

10-08 07:39