BebeSaiyan Ответов: 2

Неправильный синтаксис около ключевого слова "присоединиться" с помощью ASP.NET


обратите внимание, что я все еще новичок в базах данных,но готов учиться. На этот раз я хочу знать, как обновить данные из базы данных. Я пробовал этот код, но он выдает мне ошибку "неправильный синтаксис рядом с ключевым словом"JOIN"". Пожалуйста, помогите мне решить эту проблему.

Информация о базе данных

Таблица stringInstrumentItem (столбец brandId является внешним ключом и ссылается на первичный ключ таблицы brand, который также называется brandId):

идентификатор элемента     brandId     модель

1             1 xyz

2             1 Азбука

3             2 hjk




Таблица brand(которая имеет первичный ключ brandId, ссылающийся на таблицу strinInstrumentItem):

brandId     имя     изображение

1             гитара Ibanez       xyz.jpg

2             Крыло       abc.jpg

3             Гибсон       hjk.jpg




Основная цель состоит в том, чтобы обновить столбец с именем name в таблице brand через мой gridview. Как, например, в brandId#1, имя равно Ibanez, и я хочу изменить его на Jackson. Он должен быть в состоянии работать без ошибки исключения. Как задать этот вопрос?

Что я уже пробовал:

string queryGuitarItems = "UPDATE stringInstrumentItem JOIN brand ON stringInstrumentItem.brandId = brand.brandId SET stringInstrumentItem.brandId = @brandId IN (SELECT brand.brandId FROM brand WHERE name = @oldBrandName";
    using (SqlConnection connectionGuitarItems = new SqlConnection(ConfigurationManager.ConnectionStrings["musicStoreConnection"].ToString()))
    {
        using (SqlCommand commandGuitarItems = new SqlCommand(queryGuitarItems, connectionGuitarItems))
        {
            List<SqlParameter> parameterGuitarItems = new List<SqlParameter>();
            parameterGuitarItems.Add(new SqlParameter("@brandId", newName.Text));
            parameterGuitarItems.Add(new SqlParameter("@oldBrandName", oldName));

            connectionGuitarItems.Open();
            GetParameterGuitarItems(commandGuitarItems,parameterGuitarItems.ToArray());
            commandGuitarItems.ExecuteNonQuery();
            connectionGuitarItems.Close();
            commandGuitarItems.Parameters.Clear();
        }
    }

2 Ответов

Рейтинг:
15

Atlapure Ambrish

глядя на запрос в вашем посте, кажется, что вы пытаетесь обновить brandid в таблице brand StringInstrumentItem для oldBrandName. запрос должен быть таким..

ОБНОВИТЬ УСТАНОВИТЬ СИИ СИИ.brandId = б.brandId
Из stringInstrumentItem SII
внутреннее соединение марка Б в сии.brandId = б.brandId
И b.name = @oldBrandName


BebeSaiyan

именно этого я и хочу добиться! это действительно работает. Спасибо, брат!

Рейтинг:
1

RickZeeland

Я думаю, что ваш запрос должен выглядеть примерно так:

UPDATE SII SET SII.brandId = @brandId 
FROM stringInstrumentItem SII JOIN brand ON SII.brandId = brand.brandId 
WHERE brand.name = @oldBrandName
Но это не имело бы никакого смысла, так как вы уже присоединяетесь к тому же брендиду, так что, возможно, это то, что вам нужно:
UPDATE SII SET SII.brandId = @brandId 
FROM stringInstrumentItem SII, brand
WHERE brand.name = @oldBrandName