2012-07-28 50 views
0

我已經將count(ProductQuantity)存儲到列表中。由於每個ProductID具有不同的計數(ProductQuantity),因此我試圖根據計數(ProductQuanity)檢索ProductID。其中count sql語句

For Each i In sumofpquantity() 

    Dim sq As String = "SELECT ProductID From OrderDetail Where COUNT(ProductQuantity)= " & i & "" 
     Dim cmd2 As SqlCommand = New SqlCommand(sq, connection12) 
     Dim reading As SqlDataReader = cmd2.ExecuteReader() 
     While reading.Read() 

      list.Add(reading.GetInt32(reading.GetOrdinal("ProductID"))) 

     End While 
     reading.Close() 
    Next i 

sumofpquantity()是將計(ProductQuanity)

什麼是正確的SQL語句檢索(產品數量)

回答

0

所以,你要基於計數的產品ID的方法記錄與給定的量,則簡單地移除COUNT

Dim sq = "SELECT ProductID From OrderDetail Where ProductQuantity = " & i 

COUNT是一個聚集函數。所以你需要一個GROUP BY ProductID例如。你不能計算已經是單個數值的東西。

0

您可以使用having子句搜索具有特定發生次數的產品。例如,這看起來對產品的42名銷售:

select ProductID 
from OrderDetail 
group by 
     ProductID 
having SUM(ProductQuantity) = 42 

要通過數字42到數據庫中,可以考慮使用參數:

Dim sq As String = _ 
    "select ProductID" & _ 
    "from OrderDetail" & _ 
    "group by" & _ 
    "  ProductID" & _ 
    "having SUM(ProductQuantity) = @cnt" 
Dim cmd2 As SqlCommand = New SqlCommand(sq, connection12) 
cmd2.Parameters.AddWithValue("@cnt", 42); 
... 
0

嗯,這是使用paramaterized查詢一個很好的做法像這樣:

Dim sq as String = "SELECT ProductID " & _ 
        "FROM OrderDetail " & _ 
        "WHERE ProductQuantity = @DesiredQuantity" 
Dim cmd2 as SqlCommand = New SqlCommand(sq, connection12) 
cmd2.Parameters.AddWithValue("@DesiredQuantity", i) 

與此查詢,SQL查找產品產品數量= @DesiredQuantity,和@DesiredQuantity分配變量i的值。參數可防止SQL注入以及其他潛在問題。