我有一個返回所選歌曲的人的名單時,他們都知道這首歌,狀態爲完成查詢。選擇查詢,需要額外的where子句?
有沒有辦法,只顯示歌曲在狀態完成後,當所有的儀器都放不爲「N/A」?
例如,假設該表內容如下之一。
BandieName SongName Instrument Status Holly Wipeout Bells Complete Holly Centenial N/A Complete Charlotte Wipeout Symbols Complete Charlotte Centenial N/A Complete
,如果我從列表中選擇冬青和夏洛特,並運行該查詢,它會列出不經意的和森田,因爲它們都具有這些歌曲作爲狀態的完整;不過,我不希望它顯示森田因爲所有這首歌所選擇的人有文書N/A。
如果內容如下,並且我選擇了其中的三個,我希望它顯示所有三首歌曲,因爲並非所有列出的歌曲都是N/A。
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,都已完成狀態,並且至少有一個選擇了一些樂器(不是N/A)? – 2012-04-11 13:03:18
就是這樣,此刻我可以獲得連接到所有選定的Bandienames的狀態完成的歌曲名稱,但希望這些歌曲名稱的狀態是完整的,並且至少有一個樂器不是N/A 謝謝 – Sophie 2012-04-11 13:09:09
你使用的是什麼RDBMS? – GarethD 2012-04-11 13:48:53