2012-04-29 90 views
0

我有以下结构:2步骤SQL查询

ID CID CAMPAIGN_ID DATE(DATETIME)  DEVICE 
1  123 88   2012-04-29 07:26:14 PC 
2  123 88   2012-04-29 08:46:04 IPHONE 
3  555 91   2012-04-29 08:36:04 IPAD 

我试图找到一种方法来建立一个查询,将返回所有第一次使用的PC,然后使用有效的CID指定的campaign_id下的IPHONE(根据指定的日期)。

上面的例子CID 123属于那个类别。

+1

请在CID自连接和CAMPAIGN_ID其中的日期对于iphone而言,要高于PC之一。 – 2012-04-29 08:06:04

回答

1

由于@JohannBlais在他的评论中说,你需要加入表本身所需的条件,然后筛选出您所选择的活动:

SELECT `t1`.`CID` 
FROM 
     `tbl` AS `t1` 
    JOIN `tbl` AS `t2` ON (
     `t1`.`CID`   = `t2`.`CID` 
    AND `t1`.`CAMPAIGN_ID` = `t2`.`CAMPAIGN_ID` 
    AND `t1`.`DATE(DATETIME)` < `t2`.`DATE(DATETIME)` 
    AND `t1`.`DEVICE`   = 'PC' 
    AND `t2`.`DEVICE`   = 'IPHONE' 
) 
WHERE `t1`.`CAMPAIGN_ID` = @specified_campaign;