-1

私の Access データベースのデータは次のようになります。

srno       likes
user 1     001,002,003
user 2     001,004,005,007
user 2     001,007,009,001
etc

likes列の個々の値、つまり001002などがテーブルに表示される回数を計算したいと考えています。

私はこのコードを使用しました:

 cnn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("App_Data\Acetech.mdb"))
        cnn.Open()
        msg = "SELECT COUNT(001) FROM (productfeedback) WHERE three like '001' OR second like '001' "

        cmd = New OleDbCommand(msg, cnn)
        str = cmd.ExecuteScalar()

        cnn.Close()

次のように表示されます001 4

    If str Is DBNull.Value Then
        Label12.Text = "0"
    Else
        Label12.Text = Format(CStr(TextBox2.Text)) & Convert.ToInt32(str)
    End If
4

1 に答える 1

0

SQLではなくコードで解決できるかもしれません。VB.NET を試しましたが、これは私の最初の言語ではなく、テスト用の Datatable を使用しました

Dim dt As New DataTable()

dt.Columns.Add("srno", GetType(String))
dt.Columns.Add("likes", GetType(String))

dt.Rows.Add("User 1", "001,002,003")
dt.Rows.Add("User 2", "001,004,005,007")
dt.Rows.Add("User 3", "001,007,009,001")

Dim q = From l In dt.AsEnumerable() _
            Select l

Dim likes As New List(Of String)()
For Each row In q
    likes.AddRange(row("likes").Split(","))
Next

Dim likesGroupedBy = likes.GroupBy(Function(item) item).[Select](Function(group) New With { _
 group.Key, _
 Key .Count = group.Count() _
})

Dim ret As String = String.Empty
For Each row In likesGroupedBy
    ret += String.Format("key:{0}, count:{1}" + Environment.NewLine, row.Key, row.Count)
Next
于 2013-10-16T08:21:51.653 に答える