Запрос данных с использованием оператора SQL If или Case - PullRequest
0 голосов
/ 20 апреля 2020

Я строю рыночную базу данных, используя c# с Visual Studio 2010. Здесь так много деталей, поэтому в основном я хочу выполнить запрос в запросе, используя оператор case или if.

Вот краткое объяснение: в моей базе данных есть 3 основных таблицы, для простоты я буду использовать слова Engli sh (в скобках) вместо оригинала имена.

  1. Артикал (Предметы): Item_ID - Item_Name - Item_Category - Цена
  2. Нарудзбеница (Заказы): Order_ID - Customer_ID - Дата_ заказа
  3. 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();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...