2 つのテーブルを持つデータベースがあります。外部キーとしての広告とレコード。広告のレコードが発生する頻度を数え、昇順で並べ替える必要があります。
これを実現するには、join 句と group by 句を組み合わせて使用する必要があると想定しています。それは私が望むように機能していません。以下は私がこれまでに持っているコードです。
Public Shared Function SortAdsByHitCount() As DataTable
Dim dt As New DataTable
Try
Using context As New QREntities()
Dim ads = (From advertisement In context.QRAdvertisements
Join record In context.QRRecords On advertisement.adId Equals record.adId
Select advertisement.adId, advertisement.adRedirectUrl, advertisement.adType, advertisement.adData, count = record
Order By AdData Ascending).ToList()
'Dim ads = (From advertisement In context.QRAdvertisements
' Group advertisement.adId By advertisement.adId Into Group _
' Order By Group.Count() Ascending _
' Select Advertisement.AdRedirectUrl, Advertisement.AdType, Advertisement.AdData, Count = Group.Count()).ToList()
'Set the column headers and their accepted data types
dt.Columns.Add("adId", GetType(Integer))
dt.Columns.Add("adRedirectUrl", GetType(String))
dt.Columns.Add("adType", GetType(String))
dt.Columns.Add("adData", GetType(String))
dt.Columns.Add("hitCount", GetType(Integer))
For Each a In ads
dt.Rows.Add(a.adId, a.adRedirectUrl, a.adType, a.adData, a.Count)
Next
End Using
Catch ex As Exception
Return Nothing
End Try
Return dt
End Function
私は基本的に 1 つのテーブルから 4 行が必要で、もう一方のテーブルからの出現回数を含めるだけです。広告データ行は、レコード テーブルで何回表されたかを認識している必要があります。基本的に、グリッドビュー/リストビューは、広告が使用された頻度でソートされた広告のリストをユーザーに表示します。
例: 広告
Ad id Ad Type Ad Date Ad Occurrence
1 Automotive 13/12/2012 10
2 Personal 10/12/2012 5
3 Retail 02/11/2012 3