現在、3つの別々のSQL呼び出しを実行しています。グリッドが適切にソートされるように、可能であればそれらを1つにまとめたいと思います。
私は4つの別々のテーブルで作業しています
BlastAnalytics-次の列があり、太字は値が必要な列です... id(primaryKey)、eventType、BlastID、email、ts、bounceDesc
BlastJobs-次の列があり、太字は値が必要な列です... JobNumber(primaryKey)、MessageFrom、MessageHeader
BlastOpens-id(primaryKey)、AnalyticsID、ts
BlastClicks-id(primaryKey)、AnalyticsID、ts
結合は...BlastAnalytics.BlastID->BlastJobs.JobNumber BlastAnalytics.id-> BlastOpens.AnalyticsID BlastAnalytics.id-> BlastClicks.AnalyticsID
現在、次のSQLステートメントを実行してグリッドをバインドしています...
SELECT BlastAnalytics.eventType, BlastAnalytics.BlastID, BlastAnalytics.email,
BlastAnalytics.ts, BlastAnalytics.bounceDesc, BlastJobs.MessageFrom,
BlastJobs.MessageHeader
FROM BlastAnalytics INNER JOIN
BlastJobs ON BlastAnalytics.BlastID = BlastJobs.JobNumber
WHERE (BlastAnalytics.eventType <> 'open')
AND (BlastAnalytics.eventType <> 'click')
AND (BlastAnalytics.BlastID = @BlastID)
ORDER BY BlastAnalytics.ts DESC
次に、grid1_RowDataBoundで(個々の行が作成されるとき)、次のステートメントを実行してカウントを取得します。
SELECT COUNT(*) AS OpenCount, BlastAnalytics.email
FROM BlastAnalytics INNER JOIN
BlastOpens ON BlastAnalytics.id = BlastOpens.AnalyticsID
WHERE (BlastAnalytics.BlastID = @BlastID)
AND (BlastAnalytics.email = @email)
SELECT COUNT(*) AS ClickCount, BlastAnalytics.email
FROM BlastAnalytics INNER JOIN
BlastClicks ON BlastAnalytics.id = BlastClicks.AnalyticsID
WHERE (BlastAnalytics.BlastID = @BlastID)
AND (BlastAnalytics.email = @email)
これはすべて正常に機能しますが、GROUP BYなどを使用して、これらのステートメントを1つにまとめることができるはずですが、その方法がわかりません。
編集
これは、テーブル内のデータのタイプの例です...
BlastOpensテーブル
id AnalyticsID ts BlastID
2958 38289 1358546399 479
2959 38852 1358546391 479
2960 38280 1358546391 479
2961 38280 1358546400 479
2965 38282 1358546396 480
2986 38284 1358546398 480
BlastAnalyticsテーブル
id eventType BlastID email ts bounceDesc
38280 open 479 blahblah@blah.com 1358546555 NULL
38289 open 479 blahblah@blah.com 1358546555 NULL
38352 open 479 itsa@test.com 1358550528 NULL
38115 send 479 blahblah@blah.com 1358545375 NULL
したがって、上記の例では、blahblah @ blah.comの合計オープンカウントは3であり、itsa@test.comの合計オープンカウントは1です。