Полезные запросы для интернет-магазинов

#
Re: Полезные запросы для интернет-магазинов
Kotoff, так и думал. Погуглил, но в некоторых местах с кавычками, в некоторых без.
Спасибо!
#
Re: Полезные запросы для интернет-магазинов
Сейвчас пытался придумать запрос для присвоения меток. Например, всем товарам фирмы Sony присвоить тег Sony.
Но что-то никак не могу сообразить, как тут быть.
Посмотрел структуру таблицы `tags_relation_table`. В ней хранятся связи между меткой и товаром/инф.элементом.
Т.е. по идее нужно выполнять запрос INSERT.
Но перед этим получается нужно вручную с помощью SELECT получить список id товаров для каждого производителя, и затем составить кучу запросов вида
INSERT INTO `tags_relation_table` (
`tag_relation_id`, `tag_id`, `information_items_id`, `shop_items_catalog_item_id`, `site_id`
)VALUES(
'?', 13,  '0',  '45', '1'
)

Только вот не очень понимаю, что нужно вставлять в `tag_relation_id`, или вообще нужно просто оставить пустым, оно само укажется?

И может кто знает, как можно автоматизировать? Прочитал о команде вида
INSERT INTO `users_new` SELECT * FROM `users` WHERE `country`  =  'Russia'

Но как быть если в таблице shop_items_catalog_table нет тех полей, какие есть в tags_relation_table?
Есть ли возможность как-то укзать в запросе SELECT, чтобы он брал из таблицы с товарами id товара WHERE producer_id = n, и вставлял бы с помощью INSERT этот id в поле shop_items_catalog_item_id

Я наврал. Есть там это поле. Сейчас попробую сообразить...
#
Re: Полезные запросы для интернет-магазинов
SELECT `shop_items_catalog_item_id` FROM `shop_items_catalog_table` WHERE `shop_producers_list_id` = 5

Вот. Теперь есть код для выборки id товаров. Но никак не могу сообразить, как совместить INSERT и SELECT? Можно ли просто убрать явное указание поля shop_items_catalog_item_id? Т.е. теоретически, оно должно будет браться из результатов запроса SELECT...
INSERT INTO `tags_relation_table` (
`tag_relation_id`, `tag_id`, `information_items_id`, `site_id`
)VALUES(
'?', 13,  '0', '1'
)
SELECT `shop_items_catalog_item_id` FROM `shop_items_catalog_table` WHERE `shop_producers_list_id` = 5;


Нет, это все фигня, конечно. Ничего кроме ручного набивания запросов не могу придумать. Т.е. получаем список id, и выполняем что-то типа
INSERT INTO `tags_relation_table` (`tag_relation_id`, `tag_id`, `information_items_id`, `shop_items_catalog_item_id`, `site_id`) VALUES ('?', 13,  '0', 'id1', '1'), ('?','13','0','id2','1'), ('?','13','0','id3','1');


Только 1 вопрос остался, как быть с полем tag_relation_id? Просто не указывать?
#
Re: Полезные запросы для интернет-магазинов
ironwayru, а посмотрите на структуру таблички в phpMyAdmin
Поле tag_relation_id, как и всякое ключевое поле любой таблицы, имеет два свойства - primary key и autoincrement.
Это означает, что при вставки в таблицу новой записи значение ключа можно не указывать (и, насколько я знаю, в таких случаях даже не рекомендуется!) - оно само собою вычислится как следующее свободное значение для этого поля.
Поэтому:
INSERT INTO `tags_relation_table` (`tag_id`, `information_items_id`, `shop_items_catalog_item_id`, `site_id`) VALUES (13,  0, 'id1', 1);

(лишние кавычки я тоже убрал. и не уверен что в `shop_items_catalog_item_id` должны быть буквы id но сейчас уже неохота лезть в базу и смотреть)


Отдельно очень хочется добавить, что использовать прямые запросы к БД, когда тоже самое можно сделать с помощью api - это как-то не по-православному
В api могут быть реализованы какие-то дополнительные обработки, проверки, связи, трансформации данных, о которых вы не знаете. И вставляя записи прямыми запросами вы можете нарушить целостность данных.
Да, написать SQL-запрос быстрее, чем скрипт на api, да и выполнится запрос чуть быстрее скрипта, но, повторюсь, любой прямой запрос к БД, даже невинный select - это зло, и прибегать к этому нужно только в крайних случаях.

В вашем случае - ну что проще на api сделать выборку товаров по производителю, а потом перебирая товары в цикле получать для каждого текущие метки и добавлять еще одну. И безопасно, и не надо думать над тем куда чего вставлять.

Так что тему впору переименовывать во "Вредные запросы для интернет-магазинов".

p.s.: и да, я таки во многом максималист и довольно категоричен. Это не так уж плохо.
Заказов не беру. Консультирую редко.
#
Re: Полезные запросы для интернет-магазинов
Kotoff писал(а):
ironwayru, а посмотрите на структуру таблички в phpMyAdmin

Так я все эти данные как раз из базы и взял)
Просто проблема в том, что я плохо знаю sql...

Но меня радует, что мое предположение оказалось верным - я как раз думал, что раз инкремент, то ничего писать не надо)))
Kotoff писал(а):
Отдельно очень хочется добавить, что использовать прямые запросы к БД, когда тоже самое можно сделать с помощью api

Просто если к БД я еще хоть как-то могу написать запрос, то с помощью api я вообще ничего не смогу сделать, т.к. не умею писать скрипты, и даже не представляю, как их использовать и где)))

Собственно я поэтому и написал в этой теме - вдруг разработчик скажет в двух словах, можно ли это делать через БД, или все-таки там есть "какие-то дополнительные обработки, проверки, связи, трансформации данных, о которых" мы не знаем, и через БД это делать никак нельзя...
#
Re: Полезные запросы для интернет-магазинов
Товарищи, кто-нибудь использует запрос чтобы отключать из Яндекс.Маркета товары с количеством допустим -1
Поделитесь если у кого имеется
Даже поломанные часы два раза в сутки показывают правильное время
Модератор
#
Re: Полезные запросы для интернет-магазинов
webchest,
UPDATE `shop_items_catalog_table` SET `shop_items_catalog_yandex_market_allow` = 0 WHERE `shop_items_catalog_rest` = '-1';
#
Re: Полезные запросы для интернет-магазинов
Как проставить всем товарам и модификациям галку Экспортировать в Рамблер-Покупки?
Колибри Дизайн - создание и оптимизация сайтов
Модератор
#
Re: Полезные запросы для интернет-магазинов
Bosov, Можно легко сделать из предыдущего запроса.

Установка всем товарам экспорта в Яндекс.Маркет
UPDATE `shop_items_catalog_table` SET `shop_items_catalog_yandex_market_allow` = 1;


Установка всем товарам экспорта в Рамблер.Покупки
UPDATE `shop_items_catalog_table` SET `shop_items_catalog_rambler_pokupki_allow` = 1;
#
Re: Полезные запросы для интернет-магазинов
спасибо, работает
Колибри Дизайн - создание и оптимизация сайтов
Авторизация