次のフィールドとサンプルデータを含むテーブルがあります。
user_id meta_key meta_value
------- -------- ----------
'69' 'usertemplate' 'template1'
'69' 'userstartdate' '07/26/2012 02:01:37 PM'
'69' 'userenddate' '07/26/2013 02:01:37 PM'
'70' 'usertemplate' 'template1'
'70' 'userstartdate' '07/26/2013 02:01:37 PM'
'70' 'userenddate' '07/26/2014 02:01:37 PM'
'71' 'usertemplate' 'template2'
'71' 'userstartdate' '07/26/2012 02:01:37 PM'
'71' 'userenddate' '07/26/2013 02:01:37 PM'
'72' 'usertemplate' 'template2'
'72' 'userstartdate' '07/26/2011 02:01:37 PM'
'72' 'userenddate' '07/26/2012 02:01:37 PM'
'73' 'usertemplate' 'template2'
'73' 'userstartdate' '07/25/2011 02:01:37 PM'
'73' 'userenddate' '07/25/2012 02:01:37 PM'
私の目標は、**user_id** のリストを取得することです (たとえば):
ユーザーテンプレート = テンプレート 2
ユーザー開始日 > 2011 年 7 月 20 日 02:01:37 PM
ユーザー開始日 < 2011/07/30 02:01:37 PM
このクエリをどのように記述しますか?
編集:これは私がこれまでに試したことです:
SELECT user_id
FROM myTable t
INNER JOIN myTable s
ON t.user_id = s.user_id
AND s.meta_key = 'userstartdate'
AND CAST(s.meta_value AS DATE) > '07/20/2011 02:01:37 PM'
INNER JOIN myTable e
ON t.user_id = e.user_id
AND e.meta_key = 'userenddate'
AND CAST(e.meta_value AS DATE) < '07/30/2011 02:01:37 PM'
WHERE t.meta_key = 'usertemplate'
AND t.meta_value = 'template2'