MySQL - 选择距离表最近的日期记录并加入主数据集

时间:2015-12-25 04:48:19

标签: mysql join channel

我正在尝试创建一个数据集,该数据集将正确的营销渠道与某个已完成的应用程序相关联,并且非常难以找到最佳方法。

我有3张桌子:

  1. 表#1:联系信息;

  2. 表#2:应用程序信息;

  3. 表#3:频道跟踪历史信息

  4. 上面引用的表格中的相关字段是:

    表#1:ID_table_1

    表#2:ID_Table_1Application_Created_Date_Time_Tbl_2

    表#3:ID_Table_1Channel_Update_Created_Date_Time_Tbl_3Channel_Tracking_info

    (注意:所有3个表都在ID_Table_1列上加入)

    Table#1是个人信息存储的地方,也是他们访问我们网站的最后一个营销渠道。我的问题是我需要知道他们在完成一个应用程序Table#2时从哪个频道进来。为此,我需要从Table#3中选择具有"创建日期时间"的记录。最接近应用程序"创建日期时间"没有被追求。

    注意:Table#1的{​​{1}}与记录匹配回ID。因此,我必须加入Table#3Table#2,然后在Table#1中选择与Table#3中创建日期时间最接近日期时间的记录。

    例如:

    表#2 - 记录#1 - 创建日期时间@ 11/24/15 10:30:14

    表#3 - 记录#1 - 创建日期时间@ 11/24/15 10:29:10

    表#3 - 记录#2 - 创建日期时间@ 11/24/15 10:29:16

    表#3 - 记录#3 - 创建日期时间@ 11/24/15 10:31:15

    我只想加入Table#2 - Table#3加入Record#2 - Table#2。我想要这条记录,因为它最接近Record#1中创建的日期时间。

    另请注意,我需要在可能的情况下使用视图,以便其他人可以使用此数据,而不必依赖于我在发生更新时向他们发送更新的代码。

    我希望这是有道理的,如果不是,请问我,我会帮助回答更多问题!我必须完成这项任务,否则我的老板会对我的技能水平感到非常失望。他很高兴我花了这么长时间才想出来(2天的圈赛)。 : - \

    - 提前谢谢,

    比你不熟练的人

1 个答案:

答案 0 :(得分:0)

尝试下面结构的线条,你需要改变它以使用日期差异并添加第3个表格。

select *
  from test1
      ,test2 
 where test1.a = test2.a
   and (test1.b - test2.c) = (
select min(t1.b - t2.c)
  from test1 t1
      ,test2 t2
 where t1.a = t2.a
   and test1.a = t1.a)