2012-04-29 18 views
0

によると、私は次の構造を持っている:私は最初のPCを使用して、使用されているすべての有効なCIDを返しますクエリを作成する方法を見つけようとしている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 

を指定されたcampaign_idの下にIPHONE(指定された日付に従って)。

上記の例では、CID 123はそのカテゴリに分類されます。

+1

自己をくださいは、CIDとCAMPAIGN_ID日に参加しますiphoneがPCよりも高いためです。 –

答えて

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;