2017-07-08 54 views
-2

請幫助我在這個識別錯誤的原因關鍵字'JOIN'的語法不正確。使用asp.net

不正確的語法關鍵字「加入」

這裏附近是代碼:

Label name = (Label)GuitarBrandsGridView.Rows[e.RowIndex].FindControl("lblName"); 

string queryGuitarItems = "DELETE FROM stringInstrumentItem JOIN brand ON stringInstrumentItem.brandId = brand.brandId WHERE stringInstrumentItem.brandId IN(SELECT brand.brandId FROM brand WHERE name = @brand)"; 

using (SqlConnection connectionGuitarItems = new SqlConnection(ConfigurationManager.ConnectionStrings["musicStoreConnection"].ToString())) 
{ 
    using (SqlCommand commandGuitarItems = new SqlCommand(queryGuitarItems, connectionGuitarItems)) 
    { 
     connectionGuitarItems.Open(); 
     commandGuitarItems.Connection = connectionGuitarItems; 
     commandGuitarItems.Parameters.Add(new SqlParameter("@brand", name.Text)); 
     commandGuitarItems.ExecuteNonQuery(); 

     connectionGuitarItems.Close(); 
     commandGuitarItems.Parameters.Clear(); 
    } 
} 
+1

如果你打開SQL Server Management Studio並運行此查詢 - ' DELETE FROM stringInstrumentItem JOIN品牌ON stringInstrumentItem.brandId = brand.brandId WHERE stringInstrumentItem.brandId IN(SELECT brand.brandId FROM brand WHE RE name ='品牌價值在這裏')'你會看到同樣的錯誤。您需要在Management Studio中使用該查詢,然後嘗試在您的應用中使用它。這個問題是一個SQL問題 - 不是C#或ASP.NET。 – mjwills

+0

只能從一個表中刪除,而不能從多個表中的聯接中刪除。你想從哪個表中刪除記錄? – oerkelens

+0

順便說一句,你根本不需要子查詢。這會讓你得到相同的記錄,假設你使用'SELECT *'而不是'DELETE':'DELETE FROM stringInstrumentItem s JOIN brand b ON s.brandId = b.brandId WHERE b.name = @ brand' – oerkelens

回答

2

這裏做的權利delete from join語法

DELETE S --missing alias name 
FROM stringInstrumentItem S 
JOIN brand B 
    ON S.brandId = B.brandId 
WHERE B.name = @brand 

注:你不需要sub-query,因爲Brand表是已經加入

+0

this一個人做。是的,我錯過了S. – RockStar

0

你必須給你想刪除一個alias表。我剛剛將表格命名爲「sII」。此外,你不需要WHERE子句。你也可以在連接條件中限制刪除。

DELETE sII 
    FROM stringInstrumentItem sII 
INNER JOIN brand b 
     ON sII.brandId = b.brandId 
     AND b.name = @brand 
1

改變這一點:

DELETE FROM stringInstrumentItem JOIN brand ON stringInstrumentItem.brandId = brand.brandId WHERE stringInstrumentItem.brandId IN(SELECT brand.brandId FROM brand WHERE name = @brand) 

這樣:

DELETE FROM stringInstrumentItem 
FROM stringInstrumentItem t1 JOIN brand t2 ON t1brandId = t2.brandId WHERE t1.brandId IN(SELECT t3.brandId FROM brand t3 WHERE name = @brand) 

希望我幫你:)

相關問題