私は、選択された人物がその曲を知っていてステータスが完了しているときに、その人物の曲名のリストを返すクエリを持っています。質問を選択して、余分なwhere節が必要ですか?
すべての楽器が「該当なし」になっていない場合に、ステータスが完了した曲のみを表示する方法はありますか?
たとえば、テーブルの内容が次のものであるとします。
BandieName SongName Instrument Status Holly Wipeout Bells Complete Holly Centenial N/A Complete Charlotte Wipeout Symbols Complete Charlotte Centenial N/A Complete
私はリストからホリーとシャーロットを選択して、クエリを実行した場合、それらの両方がステータス完了して、それらの曲を持っているとして、それは、ワイプアウトと Centenial が一覧表示されます。ただし、Centenialと表示したくないのは、その曲の選択されたすべての人物がN/Aという楽器を持っているためです。内容は以下の通りだった、と私はそれらの3を選択した場合は
することは、私はすべてではないその歌のためにリストされている楽器のがN/であるとして、それは、3つのすべての曲を表示したいと思います。
BandieName SongName Instrument Status Holly Wipeout Bells Complete Holly Centenial N/A Complete Charlotte Wipeout Symbols Complete Charlotte Centenial N/A Complete Ryan Wipeout Drum Complete Ryan Centenial Drum Complete
これまでのコードは次のとおりです。
Protected Sub btnGetPlaylist_Click(sender As Object, e As System.EventArgs) Handles btnGetPlaylist.Click
Dim conn As SqlConnection = Nothing
Try
Dim connString As String = "Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\BandDatabase.mdf;Integrated Security=True;User Instance=True"
conn = New SqlConnection(connString)
Dim sqlBandies As String
Dim item As ListItem
For Each item In ListBoxBandies.Items
If item.Selected Then
Dim selectedBandies As String = item.Text
sqlBandies &= "'" & item.Text & "', "
End If
Next
Dim amountSelected As String = ListBoxBandies.Items.Count.ToString
Dim query As String = "select SongName from Learning where BandieName in (" + sqlBandies + " '') AND Status = 'Complete' group by SongName having count(distinct BandieName) = " + ListBoxBandies.GetSelectedIndices.Length.ToString
Dim cmd As SqlCommand = New SqlCommand(query, conn)
conn.Open()
Dim dr As SqlDataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection)
Dim dt As DataTable = New DataTable()
dt.Load(dr)
GridViewPlaylist.DataSource = dt
GridViewPlaylist.DataBind()
Finally
conn.Close()
End Try
End Sub
あなたの目標を明確にしましょう:選択したBandieNamesのすべてに曲名を接続し、すべてステータスを完了し、少なくとも1つの楽器(N/Aではない)を選択しますか? –
さて、それは、現時点では、ステータスが完了した、選択されたBandienamesに接続された曲名を得ることができますが、楽器のうちの少なくとも1つがN/Aでない曲名が必要です。 ありがとう – Sophie
何のRDBMSを使用していますか? – GarethD