Я строю рыночную базу данных, используя c# с Visual Studio 2010. Здесь так много деталей, поэтому в основном я хочу выполнить запрос в запросе, используя оператор case или if.
Вот краткое объяснение: в моей базе данных есть 3 основных таблицы, для простоты я буду использовать слова Engli sh (в скобках) вместо оригинала имена.
- Артикал (Предметы): Item_ID - Item_Name - Item_Category - Цена
- Нарудзбеница (Заказы): Order_ID - Customer_ID - Дата_ заказа
- Stavka_narudzbenice (Order_items): ID - Order_ID - Item_ID - Количество
Как вы можете видеть на рисунке, есть 2 dataGridView windows. Первый - это отображение товаров, а второй - карточка клиента.
Когда клиент нажимает кнопку Kreiraj narudzbu (Создать заказ), в таблице Заказы создается новый заказ.
После этого он выбирает элементы, записывающие идентификатор и количество, которое он хочет добавить в текстовые поля.
Когда нажата кнопка Dodaj (добавить), в таблице Order_Items создается новый элемент заказа. Помещение order_id в качестве последнего созданного order_id.
Подойдя к делу. Я хочу написать запрос, чтобы проверить, был ли добавленный элемент уже добавлен ранее.
Если true, то order_item будет просто обновляться запросом на обновление.
Если false, новый order_item будет создан путем вставки в запрос.
Вот эта часть кода I написал, но это не работает из-за неправильного синтаксиса оператора case, я думаю:
string query = "SELECT i.Item_Name as 'Item Name', o.* from Items i, order_items o " +
"where i.Item_ID=o.Item_ID and o.Item_ID = "+textBox1.Text + " and o.Order_ID=(SELECT
max(o.Order_ID) from Order_Itmes as o)" +
"; update repository set quantity= quantity - " + textBox2.Text + " where Item_ID= " +
textBox1.Text;
string testing = "SELECT Item_ID, Order_ID "+
+ "FROM order_items WHERE Item_ID LIKE "+
"CASE WHEN "+textbox1.text+
" THEN Update(Order_items) SET Quantity= Quantity + " + textbox2.text +
" Else INSERT INTO Order_Items(Order_ID,Item_ID,Quantity) select
max(Order_ID), "+ textBox1.Text + ", "+ textBox2.Text+
" from Orders END;";
**
DataTable tabela1 = new DataTable();
MySqlConnection konekcija = new MySqlConnection(konekcionistring);
konekcija.Open();
MySqlCommand test = new MySqlCommand(testing, konekcija);
test.ExecuteNonQuery();
MySqlDataAdapter adapter = new MySqlDataAdapter(query, konekcija);
adapter.Fill(tabela1);
dataGridView2.DataSource = tabela1;
adapter.Dispose();
konekcija.Close();