Помогите с Алгоритмом Запросов к БД

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
773
Благодарностей
517
Баллы
93
Помогите составить Алгоритм Запросов к БД на обновление и добавления товаров.

Есть БД (урезал до основных данных):
Имя: db_Product
Колонки: id#; product_id; Имя товара; Цена; Дата Обновления;

Есть сайт с которого получаю в формате Json данные:
product_id(из Json); Имя товара(из Json); Цена(из Json);

Примерная логика которую сам набросал:
1 - Получаем product_id из Json (есть рабочий шаблон на С#)
2 - Выполняем SELECT БД по product_id
3.1 - Если такого ID нет в БД, то выполняем INSERT по добавлению нового товара с новыми данными из Json
3.2 - Если такой ID есть в БД, то выполняем SELECT по "Имя товара; Цена;"
4.1 - Если "Имя товара; Цена;" не изменились выполняем UPDATE "Дата Обновления"
4.2 - Если "Имя товара; Цена;" изменились выполняем UPDATE "Имя товара; Цена; Дата Обновления;"

Сами запросы к БД написать не могу, попытался через MS Access особо ничего не получилось.
Буду очень благодарен если кто поможет.
 

Moonwalker

Client
Регистрация
16.03.2016
Сообщения
1 674
Благодарностей
1 266
Баллы
113
2. Ищем товар с нужным product_id
SELECT * FROM 'название_таблицы' WHERE 'product_id' = 'значение';

Если отдает пустоту, значит товара нет.

3.1. Добавить новый товар:
INSERT INTO 'название_таблицы' ('столбец_1', 'столбец_2', 'столбец_3', 'столбец_4') VALUES ('значение_1', 'значение_2', 'значение_3', 'значение_4');
Только для поля id (которое у тебя просто id, не забудь AI поставить)

3.2. У нас эти данные уже есть в первом запросе.

4.1. UPDATE 'название_таблицы' SET `столбец_даты`='значение' WHERE 'product_id' = 'значение';
Внимательно смотри за форматом даты

4.2. UPDATE 'название_таблицы' SET ('столбец_имя', 'столбец_цена', 'столбец_дата') VALUES ('значение_имя', 'значение_цена', 'значение_дата') WHERE 'product_id' = 'значение';

Вроде как-то так ))

UPDATE: Ниже даже изящнее решение подсказали ))
 

uuw

Client
Регистрация
04.06.2020
Сообщения
145
Благодарностей
54
Баллы
28
Сделай unique индекс по полю product_id
id - autoincrement
Все делается одним запросои
INSERT INTO db_Product (product_id; Имя товара; Цена; Дата Обновления) VALUES (product_id(из Json), Имя товара(из Json), Цена(из Json), Дата Обновления) ON DUPLICATE KEY UPDATE Имя товара = VALUES (Имя товара), Цена = VALUES(Цена), Дата Обновления = VALUES(Дата Обновления);

 

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
773
Благодарностей
517
Баллы
93
uuw, спасибо большое, работает!)) сейчас буду пытаться еще в шаблон запихать)
 

Hartwell

Client
Регистрация
25.09.2014
Сообщения
194
Благодарностей
118
Баллы
43
Помогите составить Алгоритм Запросов к БД на обновление и добавления товаров.

Есть БД (урезал до основных данных):
Имя: db_Product
Колонки: id#; product_id; Имя товара; Цена; Дата Обновления;

Есть сайт с которого получаю в формате Json данные:
product_id(из Json); Имя товара(из Json); Цена(из Json);

Примерная логика которую сам набросал:
1 - Получаем product_id из Json (есть рабочий шаблон на С#)
2 - Выполняем SELECT БД по product_id
3.1 - Если такого ID нет в БД, то выполняем INSERT по добавлению нового товара с новыми данными из Json
3.2 - Если такой ID есть в БД, то выполняем SELECT по "Имя товара; Цена;"
4.1 - Если "Имя товара; Цена;" не изменились выполняем UPDATE "Дата Обновления"
4.2 - Если "Имя товара; Цена;" изменились выполняем UPDATE "Имя товара; Цена; Дата Обновления;"

Сами запросы к БД написать не могу, попытался через MS Access особо ничего не получилось.
Буду очень благодарен если кто поможет.

Если запись существует, получаем их id, если нет, делаем инсерты

Библиотека http - Leaf.xNet, mysql - Mysql.Data

 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)