Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

[Помогите] Составить запрос в бд


Miomy

Recommended Posts

Пол дня мучаюсь, с базой совсем практически не умею работать!

Помогите плз составить запрос в БД, нужно поднять цены на 30% на товары, которые находятся в определенных категориях

 

В таблице product_to_category найти все product_id которым присвоен category_id 126, 128, 129, 131, 132, 160, 161
Я делал так: 
SELECT * from product_to_category where category_id in (126, 128, 129, 131, 132, 160, 161);
 
Вывелось 550 товаров, в таком виде:
 
INSERT INTO `product_to_category` (`product_id`, `category_id`, `main_category`) VALUES
(985, 131, 1),
(309, 126, 1),
(310, 126, 1),
....
 
вот на них мне нужно увеличить цену на 30%
 
Я так понимаю нужно:
все найденные product_id найти в таблице product_price, и если у этого product_id стоит currency_id = 3, то значение в колонке price нужно умножить на 1.3
 
Только как это соединить все в правильной запрос, я не знаю/
 
HELP!
 
Надіслати
Поділитися на інших сайтах


Про акции и скидки не забудьте

UPDATE oc_product p SET p.price = p.price+(p.price/100*30)
WHERE p.product_id IN (
SELECT p2c.product_id 
FROM oc_product_to_category p2c 
WHERE p2c.category_id in (126, 128, 129, 131, 132, 160, 161)
);

UPDATE oc_product_discount pd SET pd.price = pd.price+(pd.price/100*30)
WHERE pd.product_id IN (
SELECT p2c.product_id 
FROM oc_product_to_category p2c 
WHERE p2c.category_id in (126, 128, 129, 131, 132, 160, 161)
);

UPDATE oc_product_special ps SET ps.price = ps.price+(ps.price/100*30)
WHERE ps.product_id IN (
SELECT p2c.product_id 
FROM oc_product_to_category p2c 
WHERE p2c.category_id in (126, 128, 129, 131, 132, 160, 161)
); 
Надіслати
Поділитися на інших сайтах

Попробовал сделать запрос, цена обновилась, но только рублевая, цена в евро осталась прежняя, а она основная, получается завтра магазин запросит новый курс и цена станет прежней. 

Надіслати
Поділитися на інших сайтах


Конечно.

Я вроде понял в чем дело, только как сделать опять же не знаю))

В запросе:

update product
set `price`=`price`*1.3
WHERE `product_id` in (
SELECT product_id 
FROM `product_to_category` 
WHERE category_id in (126, 128, 129, 131, 132, 160, 161)
)

цена умножается на 1.3 в таблице product, но там стоит цена в рублях, а у нас стоит модуль мультивалюты и цена в евро или долларах хранится в таблице product_price которая имеет вот такой вид:

INSERT INTO `product_price` (`product_id`, `currency_id`, `price`) VALUES
(684, 2, 0.0000),
(684, 3, 2.3100),
(685, 2, 0.0000),
(685, 3, 10.5600);

Вот в ней мне нужно умножить на 1.3 те product_id которые присвоены категориям 126, 128, 129, 131, 132, 160, 161.

Надіслати
Поділитися на інших сайтах


Вы готовы самостоятельно написать запрос, иди будете ждать кто вам напищет

 

1. Получить список товаров в нужных категориях, вроде вы с этим спраивлись

2.  К этом запросу приявязать таблицу product

 

3 Написать запрос UPDATE таблицы товаров для замены (REPLACE) цены

 

Вот и пишите как это вы делаете, а не гадайте на кофейной гуще.

Надіслати
Поділитися на інших сайтах

хм, а зачем гемор с дополнительной таблицей и доп ценами? есть же по умолчанию несколько валют в ос, при этом валюты сами синхронизируются...

update product_price
set `price`=`price`*1.3
WHERE `product_id` in (
SELECT product_id
FROM `product_to_category`
WHERE category_id in (126, 128, 129, 131, 132, 160, 161)
)
  • +1 1
Надіслати
Поділитися на інших сайтах

 

хм, а зачем гемор с дополнительной таблицей и доп ценами? есть же по умолчанию несколько валют в ос, при этом валюты сами синхронизируются...

update product_price
set `price`=`price`*1.3
WHERE `product_id` in (
SELECT product_id
FROM `product_to_category`
WHERE category_id in (126, 128, 129, 131, 132, 160, 161)
)

 

Т.е. у вас нет дополнительной таблицы?

 

А вы проверяли ваш запрос? Что апдейтится?

А что это за таблица product_price

 

Или будете руками отбирать id категорий

Надіслати
Поділитися на інших сайтах

 

хм, а зачем гемор с дополнительной таблицей и доп ценами? есть же по умолчанию несколько валют в ос, при этом валюты сами синхронизируются...

update product_price
set `price`=`price`*1.3
WHERE `product_id` in (
SELECT product_id
FROM `product_to_category`
WHERE category_id in (126, 128, 129, 131, 132, 160, 161)
)

Так и сделал, все получилось. Спасибо.

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.