2017-07-08 2 views
-2

Bitte helfen Sie mir auf die Ursache dieses Fehlers zu identifizierenFalsche Syntax in der Nähe des Schlüsselwortes 'JOIN'. mit asp.net

falsche Syntax nahe dem Schlüsselwort "JOIN

Hier ist der Code:

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

Wenn Sie SQL Server Management Studio öffnen und diese Abfrage ausführen - ' DELETE FROM stringInstrumentItem JOIN Marke ON stringInstrumentItem.brandId = brand.brandId WHERE stringInstrumentItem.brandId IN (SELECT brand.brandId FROM Marke WHE RE Name = 'Markenwert hier') 'Sie werden den gleichen Fehler sehen. Sie müssen diese Abfrage in Management Studio bearbeiten und dann versuchen, sie in Ihrer App zu verwenden. Das Problem ist ein SQL-Problem - nicht C# oder ASP.NET. – mjwills

+0

Sie können nur aus einer Tabelle löschen, nicht aus einer Verknüpfung über mehrere Tabellen. Aus welcher Tabelle möchten Sie Datensätze löschen? – oerkelens

+0

Sie brauchen übrigens den Subselect überhaupt nicht. Dies würde Sie die gleichen Datensätze bekommen, vorausgesetzt, Sie würden ein 'SELECT *' anstelle eines 'DELETE' tun:' DELETE FROM stringInstrumentItem s JOIN Marke b ON s.brandId = b.brandId WHERE b.name = @ Marke' – oerkelens

Antwort

2

Hier das Recht zu tun delete from join Syntax

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

Hinweis: Sie brauchen nicht die sub-query, da Brand Tabelle bereits beigetreten ist

+0

dies man macht es. Ja ich habe den S. vermisst – RockStar

0

Sie haben die Tabelle liefert eine alias löschen möchten geben. Ich habe gerade die Tabelle "sII" genannt. Außerdem benötigen Sie keine WHERE-Klausel. Sie können das Löschen auch in den Join-Bedingungen einschränken.

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

Änderung dieser:

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

dazu:

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) 

Hoffe, dass ich Ihnen helfen :)

Verwandte Themen