Как обновить через SQL запрос имена ключей по условию?
Подскажите, плиз, как можно изменить имя мета ключа в таблице?
Работаю с БД на Wordpress.
В таблице `wp_postmeta` есть такие столбцы: meta_id, post_id, meta_key, meta_value
Условие: для всех записей где выполняется условие `meta_key` = '_price' AND `meta_key` = 'convert_to_rub' -> изменить '_price' на '_euro_price'.
Думал, что может автоматом создать дубликаты '_euro_price' из '_price' , а потом очистить '_price' , но так еще сложнее мне кажется.
Это надо для того, чтобы переделать текущий алгоритм формирования рублевых цен из евро по текущему курсу.
Не сталкивался с подобным и поэтому обращаюсь к сообществу. Спасибо заранее
У вас взаимоисключающее условие: "поле равно X И поле равно Y".
Надо что-то одно, или meta_key='_price', или meta_key='convert_to_rub'.
Или имеется ввиду meta_value='convert_to_rub'?
Тогда так:
UPDATE wp_postmeta SET meta_key='_euro_price' WHERE meta_key='_price' AND meta_value='convert_to_rub'
AUser0, нет. Именно хотелось бы просто переименовать значение meta_key ='_price' для всех post_id у которых есть meta_key = 'convert_to_rub'. Тут как-то надо связать условия через post_id, а как - не знаю ))
Хорошо. Условно напишу так: Надо отобрать все записи где 'convert_to_rub' = 1 and '_price' != "" и переименовать '_price' на '_euro_price' для связанного 'post_id'
Если проще создать новую запись '_euro_price' с тем же post_id что и у '_price', то можно и так, главное значение столбца 'meta_value' надо взять из записи с 'meta_key'='_price' и присвоить новой записи с 'meta_key'='_euro_price'.
Смысл тот же: хочу создать дублирующую запись для общего post_id
Станислав Шабалин,
тогда поле '_price' ключ менять нельзя, это как бы поле ядра WC
Надо так, добавить флаг, например чекбокс, который будет указывать на необходимость преобразований, указывать цену в рубле и конвертить на лету в EUR, или указывать в EUR и по флагу менять символ валюты, и делать, то, что там еще надо
WP Panda, у меня сейчас так и работает. Флаг 'convert_to_rub' , созданный через ACF, как раз это и делает.
Я с проблемой фильтрами по цене столкнулся и хочу делать пересчет рублевой цены '_price' из '_euro_price' каждый день.
WP Panda, я на форум обращался с вопросом как через SQL запрос можно на лету находить мин и макс цену если вперемешку присутствуют евровые и рублевые цены в '_price'. Никто не нашелся ответить. Решил пойти другим путем, который здесь озвучил. У меня позиций может около сотни наберется евро цен. Зато с фильтром Premmerce Filter возится не придется.
Станислав Шабалин, проблема в том, что никто не хочет делать правильно, а делают лишь бы работало. С фильтром эти не знаком, но есть мнение, что запросы его легко модифицируются.
Про sql запрос ваш странно, что никто не ответил, с телефона писать не удобно вечером могу с компа показать, но думаю вы и сами можете.
WP Panda, cпасибо, поищу. Но опять же надо будет делать инъекции в запросы к БД и это тоже увеличит время выполнения кода вывода контента. Плюс ввод дополнительного мета поля '_euro_price' даст прирост мета полей ровно в том же количестве, что и количество мета полей 'convert_to_rub'. То есть теоретически я могу просто проверять если в евро поле есть число, то надо конвертировать его в рубли и обновлять базовую цену. А этот чекбокс 'convert_to_rub' с мета записями в 'postmeta' просто удалить. Вроде остаюсь при своих и в плагин фильтра не лезу ))) имхо
WP Panda, да почему? я разделяю Вашу мысль, мне она просто не далась сразу, вот я и пошел искать альтернативы )) Конечно, я еще посмотрю как находить записи по разным условиям, я не очень желаю менять снова код, который и так работает пусть и с ограничениями по фильтрации мульти цен. Буду признателен, если сможете вечером поделиться при мерами, вдруг не справлюсь до той поры ))
WP Panda, Сложно для меня дается сделать запрос. Простые еще понятно как, но тут надо делать вычисления по условию и не нашел что-то близкое. Пока видится как вариант это сформировать два отдельных запроса для рублевых цен и евро цен по условию. Но и тут вопрос: если бы существовал в таблице отдельный столбец с признаком конвертации, то было бы все проще. Тут же этот признак записан как отдельная запись пусть и с общим post_id. Сейчас я создал новый вопрос на форуме, может помогут кто