powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Mysql select in 1 table, update 2 table
5 сообщений из 5, страница 1 из 1
Mysql select in 1 table, update 2 table
    #38484460
Михаил7777777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть 3 таблицы :

shop_product_skus (id,product_id,sku,sort,name,image_id,price,primary_price,purchase_price,compare_price,count,available,dimension_id,file_name,file_size,file_description,virtual)
это таблица артикулов 1 продукта (много к 1)

shop_product_stocks (sku_id, stock_id,product_id, count)
это таблица количества товаров на разных складах

shop_product_ostatki (id,sku,count,price)
это временная таблица с количеством товара, ценой и sku с одного склада, например stock_id=1 (обновляется 1 раз в 30 мин)

shop_product_skus и shop_product_stocks связаны по product_id

2 таблицы связанны по полю shop_product_skus.sku=shop_product_ostatki.sku
2 таблицы по полю shop_product_skus.id=shop_product_stocks.sku_id

Нужно обновить данные из shop_product_ostatki

В shop_product_skus нужно обновить
shop_product_skus.price=shop_product_ostatki.price*1.07, shop_product_skus.purchase_price=shop_product_ostatki.price*0.7 where shop_product_skus.sku=shop_product_ostatki.sku

В shop_product_stocks нужно обновить если нет строки добавить
shop_product_stocks.count=shop_product_ostatki.count, shop_product_stocks.price=shop_product_ostatki.price*1.07 where shop_product_skus.sku=shop_product_ostatki.sku and shop_product_skus.id=shop_product_stocks.sku_id

Немного запутанно наверное объяснил, хотелось сделать это все в 1 запросе

ps уже 4 дня бьюсь с этим вопросом
pps поиск пользовал, похожих вопросов не нашел :(
...
Рейтинг: 0 / 0
Mysql select in 1 table, update 2 table
    #38484543
Михаил7777777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробовал так
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
INSERT INTO shop_product_stocks (sku_id ,stock_id ,product_id ,'count')
(SELECT id.b ,product_id.b ,sku.b ,sort.b ,name.b ,image_id.b, price.b ,primary_price.b ,purchase_price.b ,available.b  FROM shop_product_skus b 
    LEFT JOIN shop_product_ostatki_sander c ON c.sku = b.sku  
    LEFT JOIN shop_product_skus a ON a.sku = c.sku
 WHERE shop_product_stocks.stock_id = 1
)
ON DUPLICATE KEY UPDATE
'count' = 'count'.c   



Не работает...
...
Рейтинг: 0 / 0
Mysql select in 1 table, update 2 table
    #38484572
Михаил7777777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Структура базы тут http://sqlfiddle.com/#!2/96e67

В select ошибка
правильно так
Код: sql
1.
2.
3.
4.
SELECT *  FROM shop_product_skus AS b 
    LEFT JOIN shop_product_ostatki AS c ON c.sku = b.sku  
    LEFT JOIN shop_product_stocks AS a ON a.sku_id = b.id
 WHERE a.stock_id = 1
...
Рейтинг: 0 / 0
Mysql select in 1 table, update 2 table
    #38484621
Kulavert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Михаил7777777,
для shop_product_skus (взято вот отсюда dev.mysql.com...update.html ):
Multiple-table syntax:
Код: sql
1.
2.
3.
UPDATE [LOW_PRIORITY] [IGNORE] table_references
SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...
[WHERE where_condition]


для вашего случая пример написать?
...
Рейтинг: 0 / 0
Mysql select in 1 table, update 2 table
    #38484713
Михаил7777777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, если вам не сложно

Последнее что получилось

Код: sql
1.
2.
3.
4.
5.
INSERT INTO shop_product_stocks (sku_id, stock_id ,product_id,count)
(SELECT *  FROM shop_product_ostatki_sander AS b 
    LEFT JOIN shop_product_skus AS c ON c.sku = b.sku  
    LEFT JOIN shop_product_stocks AS a ON a.sku_id = c.id
WHERE c.product_id>0)



ругается на count
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Mysql select in 1 table, update 2 table
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]