Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Update ... Where... Select - обновления по условию / 11 сообщений из 11, страница 1 из 1
24.07.2013, 13:15:09
    #38342001
MadChild
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Update ... Where... Select - обновления по условию
Всем привет, помогите объеденить запросы.
Я конечно могу их арзделить на 2 и сделать на php так как мне надо, но хочется развивать свои знания и понять как можно сделать

В общем надо обновить цену продуктов, ID'шники которых мы получили

Сначала выбираем ID

SELECT id FROM products WHERE category = 1

И вот всем этим товарам надо обновить цену

UPDATE prices SET price = price + 10 WHERE product_id = все ID, которые получили выше..

Ну вот как то так, буду благодарен за подсказку))
...
Рейтинг: 0 / 0
24.07.2013, 13:35:14
    #38342049
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Update ... Where... Select - обновления по условию
См. в доке синтаксис команды update, последний или предпоследний пример.
...
Рейтинг: 0 / 0
24.07.2013, 15:03:18
    #38342250
deblogger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Update ... Where... Select - обновления по условию
MadChildВсем привет, помогите объеденить запросы.

SELECT id FROM products WHERE category = 1

И вот всем этим товарам надо обновить цену

UPDATE prices SET price = price + 10 WHERE product_id = все ID, которые получили выше..

Ну вот как то так, буду благодарен за подсказку))

Ну так вот я думаю надо объединить натурально.

UPDATE prices SET price = price + 10 WHERE products.category = 1;

The WHERE clause, if given, specifies the conditions that identify which rows to update.

http://dev.mysql.com/doc/refman/5.0/en/update.html
...
Рейтинг: 0 / 0
24.07.2013, 15:05:14
    #38342260
MadChild
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Update ... Where... Select - обновления по условию
miksoft, спасибо)) то что надо))

deblogger, там запрос гораздо сложнее и боюсь что так не получится((
...
Рейтинг: 0 / 0
24.07.2013, 15:12:52
    #38342282
deblogger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Update ... Where... Select - обновления по условию
MadChild,

В той же статье описано как поступать со связанными таблицами.

"Суть такова": операторы insert, delete, update точно так же сперва выбирают как select. Остальное - нюансы. Которые, конечно, имеют значение.
...
Рейтинг: 0 / 0
24.07.2013, 15:17:41
    #38342291
deblogger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Update ... Where... Select - обновления по условию
Даже view может быть updatable.

Причем драйвер еще и проверит за вас - можно ли эту часть таблицы (в смысле ту таблицу) редактировать. Глубоко не вникал, почитал о кошмарном количестве условий для пользования редактируемым view и забыл.

Редактируемость проверяется. Как в API не знаю, в information_schema есть таблица VIEWS и там поле UPDATABLE или типа того.
...
Рейтинг: 0 / 0
24.07.2013, 15:29:08
    #38342334
deblogger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Update ... Where... Select - обновления по условию
Не заметил, это значит две таблицы

SELECT id FROM products WHERE category = 1
UPDATE prices SET price = price + 10 WHERE product_id =

priducts где есть id и дочерняя prices где есть product_id

Получить расширенную таблицу просто

select * from product, prices where prices.product_id = product.id;

в продуктах есть код category

select * from product, prices where prices.product_id = product.id AND product.category = 1;

должны получить таблицу где каждому продукту сопоставлена цена и все продукты из категории кода 1

Теоретически так же делается убдейт:

update product, prices SET price = price + 10 where prices.product_id = product.id AND product.category = 1;
...
Рейтинг: 0 / 0
24.07.2013, 16:42:37
    #38342499
deblogger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Update ... Where... Select - обновления по условию
Вот если вы захотите отредактировать category - данные которой в результате такого объединения окажутся размноженными - я не знаю что произойдет. Судя по поведению пхпмайадмина которым я вынужденно пользуюсь как интерфейсом к майскулю - размноженные данные редактировать нельзя.

Но если редактируются условно говоря уникальные записи - 1 товар == 1 цена - то все должно сработать как предусмотрено мануалом.
...
Рейтинг: 0 / 0
24.07.2013, 21:24:41
    #38342889
V2oD2o
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Update ... Where... Select - обновления по условию
Автор - выложи вырезку из таблиц и запрос
...
Рейтинг: 0 / 0
25.07.2013, 17:04:19
    #38344024
MadChild
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Update ... Where... Select - обновления по условию
deblogger - огромное спасибо
...
Рейтинг: 0 / 0
25.07.2013, 17:07:50
    #38344034
MadChild
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Update ... Where... Select - обновления по условию
V2oD2o

CREATE TABLE IF NOT EXISTS `wv5c4_virtuemart_product_custom_plg_param_ref` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`virtuemart_product_id` int(11) NOT NULL,
`virtuemart_custom_id` int(11) NOT NULL,
`val` int(11) NOT NULL,
`intval` double NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='customvalues reference' AUTO_INCREMENT=107 ;

CREATE TABLE IF NOT EXISTS `wv5c4_virtuemart_product_prices` (
`virtuemart_product_price_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`virtuemart_product_id` int(1) unsigned NOT NULL DEFAULT '0',
`virtuemart_shoppergroup_id` int(11) DEFAULT NULL,
`product_price` decimal(15,5) DEFAULT NULL,
PRIMARY KEY (`virtuemart_product_price_id`),
KEY `idx_product_price_product_id` (`virtuemart_product_id`),
KEY `idx_product_price_virtuemart_shoppergroup_id` (`virtuemart_shoppergroup_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Holds price records for a product' AUTO_INCREMENT=1942 ;

В общем надо увеличить цену на 30% всем товарам, у которых wv5c4_virtuemart_product_custom_plg_param_ref.virtuemart_custom_id = 50 и wv5c4_virtuemart_product_custom_plg_param_ref.val = 70
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Update ... Where... Select - обновления по условию / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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