max1985 Опубліковано: 9 вересня 2021 Share Опубліковано: 9 вересня 2021 Здравствуйте! Создал в таблице oc_category 2 поля min_price и max_price. Хочу занести в эти поля минимальную и максимальную цену. Пытаюсь сделать это таким запросом UPDATE `oc_category` SET (min_price, max_price) = ( SELECT path_id AS category_id, MIN(IFNULL(ps.price, p.price)) AS min_price, MAX(IFNULL(ps.price, p.price)) AS max_price FROM oc_product AS p LEFT JOIN oc_product_to_category AS ptc USING(product_id) LEFT JOIN oc_category_path USING(category_id) LEFT JOIN oc_product_special AS ps USING(product_id) WHERE IFNULL(ps.price, p.price) > 0 AND path_id IS NOT NULL AND p.quantity > 1 AND p.date_available <= NOW() GROUP BY path_id) Но он не работает, хотя SELECT отдельно выводится. Буду благодарен за помощь! Спасибо! Надіслати Поділитися на інших сайтах More sharing options... niger Опубліковано: 9 вересня 2021 Share Опубліковано: 9 вересня 2021 26 минут назад, max1985 сказал: Здравствуйте! Создал в таблице oc_category 2 поля min_price и max_price. Хочу занести в эти поля минимальную и максимальную цену. Пытаюсь сделать это таким запросом UPDATE `oc_category` SET (min_price, max_price) = ( SELECT path_id AS category_id, MIN(IFNULL(ps.price, p.price)) AS min_price, MAX(IFNULL(ps.price, p.price)) AS max_price FROM oc_product AS p LEFT JOIN oc_product_to_category AS ptc USING(product_id) LEFT JOIN oc_category_path USING(category_id) LEFT JOIN oc_product_special AS ps USING(product_id) WHERE IFNULL(ps.price, p.price) > 0 AND path_id IS NOT NULL AND p.quantity > 1 AND p.date_available <= NOW() GROUP BY path_id) Но он не работает, хотя SELECT отдельно выводится. Буду благодарен за помощь! Спасибо! А можно вопрос, зачем вам отдельные поля для этого в таблице? Если это вычисляемое поле, причем эти данные есть у вас на странице категории. Надіслати Поділитися на інших сайтах More sharing options... max1985 Опубліковано: 9 вересня 2021 Автор Share Опубліковано: 9 вересня 2021 4 минуты назад, niger сказал: А можно вопрос, зачем вам отдельные поля для этого в таблице? Если это вычисляемое поле, причем эти данные есть у вас на странице категории. Чтоб не грузило базу при каждой загрузке страницы категории. Большое к-во товаров в родительской категории. Надіслати Поділитися на інших сайтах More sharing options... niger Опубліковано: 9 вересня 2021 Share Опубліковано: 9 вересня 2021 Берете просто из своего массива продуктов, которые на странице категории, выбираете колонку цены, делаете number_format, и юзает min(), max() функции, чтобы получать максимальное число и минимальное из массива. Надіслати Поділитися на інших сайтах More sharing options... niger Опубліковано: 9 вересня 2021 Share Опубліковано: 9 вересня 2021 1 минуту назад, max1985 сказал: Чтоб не грузило базу при каждой загрузке страницы категории. Большое к-во товаров в родительской категории. Кого не грузило? вы этот запрос и так делаете, или откуда у вас цены берутся? от святого духа? Надіслати Поділитися на інших сайтах More sharing options... niger Опубліковано: 9 вересня 2021 Share Опубліковано: 9 вересня 2021 Вы в контроллере category собираете уже все товары уже с ценами. Соберите отдельно рядышком массив цен, когда он готов, отфоматируйте и получите минимальное и максимальное значение массива, и отправьте во вьюуху И вы получается при каждом обновлении цены любого товара, должны проапдейтить таблицу категории, для обновление макс и мин цены. И у меня грузит базу, работа с массивом обычным, а у вас нет update? Удивительное рядом. Надіслати Поділитися на інших сайтах More sharing options... max1985 Опубліковано: 9 вересня 2021 Автор Share Опубліковано: 9 вересня 2021 15 минут назад, niger сказал: Кого не грузило? вы этот запрос и так делаете, или откуда у вас цены берутся? от святого духа? Цены в эту таблицу будут залетать раз в сутки по крону. Надіслати Поділитися на інших сайтах More sharing options... Eldaeron Опубліковано: 9 вересня 2021 Share Опубліковано: 9 вересня 2021 5 хвилин назад, niger сказав: Вы в контроллере category собираете уже все товары уже с ценами. Соберите отдельно рядышком массив цен, когда он готов, отфоматируйте и получите минимальное и максимальное значение массива, и отправьте во вьюуху И вы получается при каждом обновлении цены любого товара, должны проапдейтить таблицу категории, для обновление макс и мин цены. И у меня грузит базу, работа с массивом обычным, а у вас нет update? Удивительное рядом. Контроллер в категории не соберает все товары, а только по лимиту который задаеться в настройках системы. Когда метод вызываеться getProducts, там же указан параметр => $filter_data, в котором есть sort, order, limit, start (страница * лимит)... А человеку возможно нужно всех товаром из категории. Даже те что не попадают в фильтр вызова метода getProducts. Надіслати Поділитися на інших сайтах More sharing options... Eldaeron Опубліковано: 9 вересня 2021 Share Опубліковано: 9 вересня 2021 28 хвилин назад, max1985 сказав: Цены в эту таблицу будут залетать раз в сутки по крону. Если по крону тогда сделайте через контроллер Надіслати Поділитися на інших сайтах More sharing options... max1985 Опубліковано: 9 вересня 2021 Автор Share Опубліковано: 9 вересня 2021 4 минуты назад, Eldaeron сказал: Если по крону тогда сделайте через контроллер Та это сделаю, проблема в составлении запроса, на обновление. Надіслати Поділитися на інших сайтах More sharing options... Eldaeron Опубліковано: 9 вересня 2021 Share Опубліковано: 9 вересня 2021 3 хвилини назад, max1985 сказав: Та это сделаю, проблема в составлении запроса, на обновление. ControllerExtensionModuleUpdateCronMINMAXPrice { $this->load->module('extension/module/updatecronminmaxprice'); $results = $this->extension_module_updatecronminmaxprice->SelectAllCategories(); // туда заганяете SELECT foreach ($results as $result) { // перебор $this->extension_module_updatecronminmaxprice->UpdateCategory($result); // А тут упдейт WHERE category_id, ну и ячейки min / max тоже будут... } } ModelExtensionModuleUpdateCronMINMAXPrice { UpdateCategory($result) { .. } } Если категорий мало то так можно, даже не парясь. А потом рефактор сделать Потому что UPDATE имя_таблицы SET поле1=значение1, поле2=значение2, поле3=значение3... WHERE условие_по_которому_следует_выбрать_строки Только так. 1 Надіслати Поділитися на інших сайтах More sharing options... Eldaeron Опубліковано: 9 вересня 2021 Share Опубліковано: 9 вересня 2021 UPDATE `oc_category` AS c INNER JOIN ( SELECT path_id AS category_id, MIN(IFNULL(ps.price, p.price)) AS min_price, MAX(IFNULL(ps.price, p.price)) AS max_price FROM oc_product AS p LEFT JOIN oc_product_to_category AS ptc USING(product_id) LEFT JOIN oc_category_path USING(category_id) LEFT JOIN oc_product_special AS ps USING(product_id) WHERE IFNULL(ps.price, p.price) > 0 AND path_id IS NOT NULL AND p.quantity > 1 AND p.date_available <= NOW() GROUP BY path_id ) AS tmp ON tmp.category_id = c.category_id SET c.min_price = tmp.min_price, c.max_price = tmp.max_price; 1 Надіслати Поділитися на інших сайтах More sharing options... niger Опубліковано: 9 вересня 2021 Share Опубліковано: 9 вересня 2021 3 часа назад, Eldaeron сказал: Контроллер в категории не соберает все товары, а только по лимиту который задаеться в настройках системы. Когда метод вызываеться getProducts, там же указан параметр => $filter_data, в котором есть sort, order, limit, start (страница * лимит)... А человеку возможно нужно всех товаром из категории. Даже те что не попадают в фильтр вызова метода getProducts. Точно, забыл уже как я это делал. Собирал эти данные и ложил в Кеш на пару суток. Вы правы. Но и там и там запросы, надо смотреть и профилировать - какой вариант экономнее, хотя может быть вообще экономия на спичках Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Загальні питання Запрос для обновления максимальной и минимальной цены товаров в категории Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich Промо банери в категоріях товарів Автор: IHOR1989 Trend - адаптивний універсальний шаблон Автор: DSV × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
niger Опубліковано: 9 вересня 2021 Share Опубліковано: 9 вересня 2021 26 минут назад, max1985 сказал: Здравствуйте! Создал в таблице oc_category 2 поля min_price и max_price. Хочу занести в эти поля минимальную и максимальную цену. Пытаюсь сделать это таким запросом UPDATE `oc_category` SET (min_price, max_price) = ( SELECT path_id AS category_id, MIN(IFNULL(ps.price, p.price)) AS min_price, MAX(IFNULL(ps.price, p.price)) AS max_price FROM oc_product AS p LEFT JOIN oc_product_to_category AS ptc USING(product_id) LEFT JOIN oc_category_path USING(category_id) LEFT JOIN oc_product_special AS ps USING(product_id) WHERE IFNULL(ps.price, p.price) > 0 AND path_id IS NOT NULL AND p.quantity > 1 AND p.date_available <= NOW() GROUP BY path_id) Но он не работает, хотя SELECT отдельно выводится. Буду благодарен за помощь! Спасибо! А можно вопрос, зачем вам отдельные поля для этого в таблице? Если это вычисляемое поле, причем эти данные есть у вас на странице категории. Надіслати Поділитися на інших сайтах More sharing options...
max1985 Опубліковано: 9 вересня 2021 Автор Share Опубліковано: 9 вересня 2021 4 минуты назад, niger сказал: А можно вопрос, зачем вам отдельные поля для этого в таблице? Если это вычисляемое поле, причем эти данные есть у вас на странице категории. Чтоб не грузило базу при каждой загрузке страницы категории. Большое к-во товаров в родительской категории. Надіслати Поділитися на інших сайтах More sharing options... niger Опубліковано: 9 вересня 2021 Share Опубліковано: 9 вересня 2021 Берете просто из своего массива продуктов, которые на странице категории, выбираете колонку цены, делаете number_format, и юзает min(), max() функции, чтобы получать максимальное число и минимальное из массива. Надіслати Поділитися на інших сайтах More sharing options... niger Опубліковано: 9 вересня 2021 Share Опубліковано: 9 вересня 2021 1 минуту назад, max1985 сказал: Чтоб не грузило базу при каждой загрузке страницы категории. Большое к-во товаров в родительской категории. Кого не грузило? вы этот запрос и так делаете, или откуда у вас цены берутся? от святого духа? Надіслати Поділитися на інших сайтах More sharing options... niger Опубліковано: 9 вересня 2021 Share Опубліковано: 9 вересня 2021 Вы в контроллере category собираете уже все товары уже с ценами. Соберите отдельно рядышком массив цен, когда он готов, отфоматируйте и получите минимальное и максимальное значение массива, и отправьте во вьюуху И вы получается при каждом обновлении цены любого товара, должны проапдейтить таблицу категории, для обновление макс и мин цены. И у меня грузит базу, работа с массивом обычным, а у вас нет update? Удивительное рядом. Надіслати Поділитися на інших сайтах More sharing options... max1985 Опубліковано: 9 вересня 2021 Автор Share Опубліковано: 9 вересня 2021 15 минут назад, niger сказал: Кого не грузило? вы этот запрос и так делаете, или откуда у вас цены берутся? от святого духа? Цены в эту таблицу будут залетать раз в сутки по крону. Надіслати Поділитися на інших сайтах More sharing options... Eldaeron Опубліковано: 9 вересня 2021 Share Опубліковано: 9 вересня 2021 5 хвилин назад, niger сказав: Вы в контроллере category собираете уже все товары уже с ценами. Соберите отдельно рядышком массив цен, когда он готов, отфоматируйте и получите минимальное и максимальное значение массива, и отправьте во вьюуху И вы получается при каждом обновлении цены любого товара, должны проапдейтить таблицу категории, для обновление макс и мин цены. И у меня грузит базу, работа с массивом обычным, а у вас нет update? Удивительное рядом. Контроллер в категории не соберает все товары, а только по лимиту который задаеться в настройках системы. Когда метод вызываеться getProducts, там же указан параметр => $filter_data, в котором есть sort, order, limit, start (страница * лимит)... А человеку возможно нужно всех товаром из категории. Даже те что не попадают в фильтр вызова метода getProducts. Надіслати Поділитися на інших сайтах More sharing options... Eldaeron Опубліковано: 9 вересня 2021 Share Опубліковано: 9 вересня 2021 28 хвилин назад, max1985 сказав: Цены в эту таблицу будут залетать раз в сутки по крону. Если по крону тогда сделайте через контроллер Надіслати Поділитися на інших сайтах More sharing options... max1985 Опубліковано: 9 вересня 2021 Автор Share Опубліковано: 9 вересня 2021 4 минуты назад, Eldaeron сказал: Если по крону тогда сделайте через контроллер Та это сделаю, проблема в составлении запроса, на обновление. Надіслати Поділитися на інших сайтах More sharing options... Eldaeron Опубліковано: 9 вересня 2021 Share Опубліковано: 9 вересня 2021 3 хвилини назад, max1985 сказав: Та это сделаю, проблема в составлении запроса, на обновление. ControllerExtensionModuleUpdateCronMINMAXPrice { $this->load->module('extension/module/updatecronminmaxprice'); $results = $this->extension_module_updatecronminmaxprice->SelectAllCategories(); // туда заганяете SELECT foreach ($results as $result) { // перебор $this->extension_module_updatecronminmaxprice->UpdateCategory($result); // А тут упдейт WHERE category_id, ну и ячейки min / max тоже будут... } } ModelExtensionModuleUpdateCronMINMAXPrice { UpdateCategory($result) { .. } } Если категорий мало то так можно, даже не парясь. А потом рефактор сделать Потому что UPDATE имя_таблицы SET поле1=значение1, поле2=значение2, поле3=значение3... WHERE условие_по_которому_следует_выбрать_строки Только так. 1 Надіслати Поділитися на інших сайтах More sharing options... Eldaeron Опубліковано: 9 вересня 2021 Share Опубліковано: 9 вересня 2021 UPDATE `oc_category` AS c INNER JOIN ( SELECT path_id AS category_id, MIN(IFNULL(ps.price, p.price)) AS min_price, MAX(IFNULL(ps.price, p.price)) AS max_price FROM oc_product AS p LEFT JOIN oc_product_to_category AS ptc USING(product_id) LEFT JOIN oc_category_path USING(category_id) LEFT JOIN oc_product_special AS ps USING(product_id) WHERE IFNULL(ps.price, p.price) > 0 AND path_id IS NOT NULL AND p.quantity > 1 AND p.date_available <= NOW() GROUP BY path_id ) AS tmp ON tmp.category_id = c.category_id SET c.min_price = tmp.min_price, c.max_price = tmp.max_price; 1 Надіслати Поділитися на інших сайтах More sharing options... niger Опубліковано: 9 вересня 2021 Share Опубліковано: 9 вересня 2021 3 часа назад, Eldaeron сказал: Контроллер в категории не соберает все товары, а только по лимиту который задаеться в настройках системы. Когда метод вызываеться getProducts, там же указан параметр => $filter_data, в котором есть sort, order, limit, start (страница * лимит)... А человеку возможно нужно всех товаром из категории. Даже те что не попадают в фильтр вызова метода getProducts. Точно, забыл уже как я это делал. Собирал эти данные и ложил в Кеш на пару суток. Вы правы. Но и там и там запросы, надо смотреть и профилировать - какой вариант экономнее, хотя может быть вообще экономия на спичках Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Загальні питання Запрос для обновления максимальной и минимальной цены товаров в категории Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich Промо банери в категоріях товарів Автор: IHOR1989 Trend - адаптивний універсальний шаблон Автор: DSV × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
niger Опубліковано: 9 вересня 2021 Share Опубліковано: 9 вересня 2021 Берете просто из своего массива продуктов, которые на странице категории, выбираете колонку цены, делаете number_format, и юзает min(), max() функции, чтобы получать максимальное число и минимальное из массива. Надіслати Поділитися на інших сайтах More sharing options...
niger Опубліковано: 9 вересня 2021 Share Опубліковано: 9 вересня 2021 1 минуту назад, max1985 сказал: Чтоб не грузило базу при каждой загрузке страницы категории. Большое к-во товаров в родительской категории. Кого не грузило? вы этот запрос и так делаете, или откуда у вас цены берутся? от святого духа? Надіслати Поділитися на інших сайтах More sharing options...
niger Опубліковано: 9 вересня 2021 Share Опубліковано: 9 вересня 2021 Вы в контроллере category собираете уже все товары уже с ценами. Соберите отдельно рядышком массив цен, когда он готов, отфоматируйте и получите минимальное и максимальное значение массива, и отправьте во вьюуху И вы получается при каждом обновлении цены любого товара, должны проапдейтить таблицу категории, для обновление макс и мин цены. И у меня грузит базу, работа с массивом обычным, а у вас нет update? Удивительное рядом. Надіслати Поділитися на інших сайтах More sharing options...
max1985 Опубліковано: 9 вересня 2021 Автор Share Опубліковано: 9 вересня 2021 15 минут назад, niger сказал: Кого не грузило? вы этот запрос и так делаете, или откуда у вас цены берутся? от святого духа? Цены в эту таблицу будут залетать раз в сутки по крону. Надіслати Поділитися на інших сайтах More sharing options... Eldaeron Опубліковано: 9 вересня 2021 Share Опубліковано: 9 вересня 2021 5 хвилин назад, niger сказав: Вы в контроллере category собираете уже все товары уже с ценами. Соберите отдельно рядышком массив цен, когда он готов, отфоматируйте и получите минимальное и максимальное значение массива, и отправьте во вьюуху И вы получается при каждом обновлении цены любого товара, должны проапдейтить таблицу категории, для обновление макс и мин цены. И у меня грузит базу, работа с массивом обычным, а у вас нет update? Удивительное рядом. Контроллер в категории не соберает все товары, а только по лимиту который задаеться в настройках системы. Когда метод вызываеться getProducts, там же указан параметр => $filter_data, в котором есть sort, order, limit, start (страница * лимит)... А человеку возможно нужно всех товаром из категории. Даже те что не попадают в фильтр вызова метода getProducts. Надіслати Поділитися на інших сайтах More sharing options... Eldaeron Опубліковано: 9 вересня 2021 Share Опубліковано: 9 вересня 2021 28 хвилин назад, max1985 сказав: Цены в эту таблицу будут залетать раз в сутки по крону. Если по крону тогда сделайте через контроллер Надіслати Поділитися на інших сайтах More sharing options... max1985 Опубліковано: 9 вересня 2021 Автор Share Опубліковано: 9 вересня 2021 4 минуты назад, Eldaeron сказал: Если по крону тогда сделайте через контроллер Та это сделаю, проблема в составлении запроса, на обновление. Надіслати Поділитися на інших сайтах More sharing options... Eldaeron Опубліковано: 9 вересня 2021 Share Опубліковано: 9 вересня 2021 3 хвилини назад, max1985 сказав: Та это сделаю, проблема в составлении запроса, на обновление. ControllerExtensionModuleUpdateCronMINMAXPrice { $this->load->module('extension/module/updatecronminmaxprice'); $results = $this->extension_module_updatecronminmaxprice->SelectAllCategories(); // туда заганяете SELECT foreach ($results as $result) { // перебор $this->extension_module_updatecronminmaxprice->UpdateCategory($result); // А тут упдейт WHERE category_id, ну и ячейки min / max тоже будут... } } ModelExtensionModuleUpdateCronMINMAXPrice { UpdateCategory($result) { .. } } Если категорий мало то так можно, даже не парясь. А потом рефактор сделать Потому что UPDATE имя_таблицы SET поле1=значение1, поле2=значение2, поле3=значение3... WHERE условие_по_которому_следует_выбрать_строки Только так. 1 Надіслати Поділитися на інших сайтах More sharing options... Eldaeron Опубліковано: 9 вересня 2021 Share Опубліковано: 9 вересня 2021 UPDATE `oc_category` AS c INNER JOIN ( SELECT path_id AS category_id, MIN(IFNULL(ps.price, p.price)) AS min_price, MAX(IFNULL(ps.price, p.price)) AS max_price FROM oc_product AS p LEFT JOIN oc_product_to_category AS ptc USING(product_id) LEFT JOIN oc_category_path USING(category_id) LEFT JOIN oc_product_special AS ps USING(product_id) WHERE IFNULL(ps.price, p.price) > 0 AND path_id IS NOT NULL AND p.quantity > 1 AND p.date_available <= NOW() GROUP BY path_id ) AS tmp ON tmp.category_id = c.category_id SET c.min_price = tmp.min_price, c.max_price = tmp.max_price; 1 Надіслати Поділитися на інших сайтах More sharing options... niger Опубліковано: 9 вересня 2021 Share Опубліковано: 9 вересня 2021 3 часа назад, Eldaeron сказал: Контроллер в категории не соберает все товары, а только по лимиту который задаеться в настройках системы. Когда метод вызываеться getProducts, там же указан параметр => $filter_data, в котором есть sort, order, limit, start (страница * лимит)... А человеку возможно нужно всех товаром из категории. Даже те что не попадают в фильтр вызова метода getProducts. Точно, забыл уже как я это делал. Собирал эти данные и ложил в Кеш на пару суток. Вы правы. Но и там и там запросы, надо смотреть и профилировать - какой вариант экономнее, хотя может быть вообще экономия на спичках Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Загальні питання Запрос для обновления максимальной и минимальной цены товаров в категории Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich Промо банери в категоріях товарів Автор: IHOR1989 Trend - адаптивний універсальний шаблон Автор: DSV × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
Eldaeron Опубліковано: 9 вересня 2021 Share Опубліковано: 9 вересня 2021 5 хвилин назад, niger сказав: Вы в контроллере category собираете уже все товары уже с ценами. Соберите отдельно рядышком массив цен, когда он готов, отфоматируйте и получите минимальное и максимальное значение массива, и отправьте во вьюуху И вы получается при каждом обновлении цены любого товара, должны проапдейтить таблицу категории, для обновление макс и мин цены. И у меня грузит базу, работа с массивом обычным, а у вас нет update? Удивительное рядом. Контроллер в категории не соберает все товары, а только по лимиту который задаеться в настройках системы. Когда метод вызываеться getProducts, там же указан параметр => $filter_data, в котором есть sort, order, limit, start (страница * лимит)... А человеку возможно нужно всех товаром из категории. Даже те что не попадают в фильтр вызова метода getProducts. Надіслати Поділитися на інших сайтах More sharing options... Eldaeron Опубліковано: 9 вересня 2021 Share Опубліковано: 9 вересня 2021 28 хвилин назад, max1985 сказав: Цены в эту таблицу будут залетать раз в сутки по крону. Если по крону тогда сделайте через контроллер Надіслати Поділитися на інших сайтах More sharing options... max1985 Опубліковано: 9 вересня 2021 Автор Share Опубліковано: 9 вересня 2021 4 минуты назад, Eldaeron сказал: Если по крону тогда сделайте через контроллер Та это сделаю, проблема в составлении запроса, на обновление. Надіслати Поділитися на інших сайтах More sharing options... Eldaeron Опубліковано: 9 вересня 2021 Share Опубліковано: 9 вересня 2021 3 хвилини назад, max1985 сказав: Та это сделаю, проблема в составлении запроса, на обновление. ControllerExtensionModuleUpdateCronMINMAXPrice { $this->load->module('extension/module/updatecronminmaxprice'); $results = $this->extension_module_updatecronminmaxprice->SelectAllCategories(); // туда заганяете SELECT foreach ($results as $result) { // перебор $this->extension_module_updatecronminmaxprice->UpdateCategory($result); // А тут упдейт WHERE category_id, ну и ячейки min / max тоже будут... } } ModelExtensionModuleUpdateCronMINMAXPrice { UpdateCategory($result) { .. } } Если категорий мало то так можно, даже не парясь. А потом рефактор сделать Потому что UPDATE имя_таблицы SET поле1=значение1, поле2=значение2, поле3=значение3... WHERE условие_по_которому_следует_выбрать_строки Только так. 1 Надіслати Поділитися на інших сайтах More sharing options... Eldaeron Опубліковано: 9 вересня 2021 Share Опубліковано: 9 вересня 2021 UPDATE `oc_category` AS c INNER JOIN ( SELECT path_id AS category_id, MIN(IFNULL(ps.price, p.price)) AS min_price, MAX(IFNULL(ps.price, p.price)) AS max_price FROM oc_product AS p LEFT JOIN oc_product_to_category AS ptc USING(product_id) LEFT JOIN oc_category_path USING(category_id) LEFT JOIN oc_product_special AS ps USING(product_id) WHERE IFNULL(ps.price, p.price) > 0 AND path_id IS NOT NULL AND p.quantity > 1 AND p.date_available <= NOW() GROUP BY path_id ) AS tmp ON tmp.category_id = c.category_id SET c.min_price = tmp.min_price, c.max_price = tmp.max_price; 1 Надіслати Поділитися на інших сайтах More sharing options... niger Опубліковано: 9 вересня 2021 Share Опубліковано: 9 вересня 2021 3 часа назад, Eldaeron сказал: Контроллер в категории не соберает все товары, а только по лимиту который задаеться в настройках системы. Когда метод вызываеться getProducts, там же указан параметр => $filter_data, в котором есть sort, order, limit, start (страница * лимит)... А человеку возможно нужно всех товаром из категории. Даже те что не попадают в фильтр вызова метода getProducts. Точно, забыл уже как я это делал. Собирал эти данные и ложил в Кеш на пару суток. Вы правы. Но и там и там запросы, надо смотреть и профилировать - какой вариант экономнее, хотя может быть вообще экономия на спичках Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Загальні питання Запрос для обновления максимальной и минимальной цены товаров в категории Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich Промо банери в категоріях товарів Автор: IHOR1989 Trend - адаптивний універсальний шаблон Автор: DSV × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
Eldaeron Опубліковано: 9 вересня 2021 Share Опубліковано: 9 вересня 2021 28 хвилин назад, max1985 сказав: Цены в эту таблицу будут залетать раз в сутки по крону. Если по крону тогда сделайте через контроллер Надіслати Поділитися на інших сайтах More sharing options... max1985 Опубліковано: 9 вересня 2021 Автор Share Опубліковано: 9 вересня 2021 4 минуты назад, Eldaeron сказал: Если по крону тогда сделайте через контроллер Та это сделаю, проблема в составлении запроса, на обновление. Надіслати Поділитися на інших сайтах More sharing options... Eldaeron Опубліковано: 9 вересня 2021 Share Опубліковано: 9 вересня 2021 3 хвилини назад, max1985 сказав: Та это сделаю, проблема в составлении запроса, на обновление. ControllerExtensionModuleUpdateCronMINMAXPrice { $this->load->module('extension/module/updatecronminmaxprice'); $results = $this->extension_module_updatecronminmaxprice->SelectAllCategories(); // туда заганяете SELECT foreach ($results as $result) { // перебор $this->extension_module_updatecronminmaxprice->UpdateCategory($result); // А тут упдейт WHERE category_id, ну и ячейки min / max тоже будут... } } ModelExtensionModuleUpdateCronMINMAXPrice { UpdateCategory($result) { .. } } Если категорий мало то так можно, даже не парясь. А потом рефактор сделать Потому что UPDATE имя_таблицы SET поле1=значение1, поле2=значение2, поле3=значение3... WHERE условие_по_которому_следует_выбрать_строки Только так. 1 Надіслати Поділитися на інших сайтах More sharing options... Eldaeron Опубліковано: 9 вересня 2021 Share Опубліковано: 9 вересня 2021 UPDATE `oc_category` AS c INNER JOIN ( SELECT path_id AS category_id, MIN(IFNULL(ps.price, p.price)) AS min_price, MAX(IFNULL(ps.price, p.price)) AS max_price FROM oc_product AS p LEFT JOIN oc_product_to_category AS ptc USING(product_id) LEFT JOIN oc_category_path USING(category_id) LEFT JOIN oc_product_special AS ps USING(product_id) WHERE IFNULL(ps.price, p.price) > 0 AND path_id IS NOT NULL AND p.quantity > 1 AND p.date_available <= NOW() GROUP BY path_id ) AS tmp ON tmp.category_id = c.category_id SET c.min_price = tmp.min_price, c.max_price = tmp.max_price; 1 Надіслати Поділитися на інших сайтах More sharing options... niger Опубліковано: 9 вересня 2021 Share Опубліковано: 9 вересня 2021 3 часа назад, Eldaeron сказал: Контроллер в категории не соберает все товары, а только по лимиту который задаеться в настройках системы. Когда метод вызываеться getProducts, там же указан параметр => $filter_data, в котором есть sort, order, limit, start (страница * лимит)... А человеку возможно нужно всех товаром из категории. Даже те что не попадают в фильтр вызова метода getProducts. Точно, забыл уже как я это делал. Собирал эти данные и ложил в Кеш на пару суток. Вы правы. Но и там и там запросы, надо смотреть и профилировать - какой вариант экономнее, хотя может быть вообще экономия на спичках Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Загальні питання Запрос для обновления максимальной и минимальной цены товаров в категории Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich Промо банери в категоріях товарів Автор: IHOR1989 Trend - адаптивний універсальний шаблон Автор: DSV
max1985 Опубліковано: 9 вересня 2021 Автор Share Опубліковано: 9 вересня 2021 4 минуты назад, Eldaeron сказал: Если по крону тогда сделайте через контроллер Та это сделаю, проблема в составлении запроса, на обновление. Надіслати Поділитися на інших сайтах More sharing options... Eldaeron Опубліковано: 9 вересня 2021 Share Опубліковано: 9 вересня 2021 3 хвилини назад, max1985 сказав: Та это сделаю, проблема в составлении запроса, на обновление. ControllerExtensionModuleUpdateCronMINMAXPrice { $this->load->module('extension/module/updatecronminmaxprice'); $results = $this->extension_module_updatecronminmaxprice->SelectAllCategories(); // туда заганяете SELECT foreach ($results as $result) { // перебор $this->extension_module_updatecronminmaxprice->UpdateCategory($result); // А тут упдейт WHERE category_id, ну и ячейки min / max тоже будут... } } ModelExtensionModuleUpdateCronMINMAXPrice { UpdateCategory($result) { .. } } Если категорий мало то так можно, даже не парясь. А потом рефактор сделать Потому что UPDATE имя_таблицы SET поле1=значение1, поле2=значение2, поле3=значение3... WHERE условие_по_которому_следует_выбрать_строки Только так. 1 Надіслати Поділитися на інших сайтах More sharing options... Eldaeron Опубліковано: 9 вересня 2021 Share Опубліковано: 9 вересня 2021 UPDATE `oc_category` AS c INNER JOIN ( SELECT path_id AS category_id, MIN(IFNULL(ps.price, p.price)) AS min_price, MAX(IFNULL(ps.price, p.price)) AS max_price FROM oc_product AS p LEFT JOIN oc_product_to_category AS ptc USING(product_id) LEFT JOIN oc_category_path USING(category_id) LEFT JOIN oc_product_special AS ps USING(product_id) WHERE IFNULL(ps.price, p.price) > 0 AND path_id IS NOT NULL AND p.quantity > 1 AND p.date_available <= NOW() GROUP BY path_id ) AS tmp ON tmp.category_id = c.category_id SET c.min_price = tmp.min_price, c.max_price = tmp.max_price; 1 Надіслати Поділитися на інших сайтах More sharing options... niger Опубліковано: 9 вересня 2021 Share Опубліковано: 9 вересня 2021 3 часа назад, Eldaeron сказал: Контроллер в категории не соберает все товары, а только по лимиту который задаеться в настройках системы. Когда метод вызываеться getProducts, там же указан параметр => $filter_data, в котором есть sort, order, limit, start (страница * лимит)... А человеку возможно нужно всех товаром из категории. Даже те что не попадают в фильтр вызова метода getProducts. Точно, забыл уже как я это делал. Собирал эти данные и ложил в Кеш на пару суток. Вы правы. Но и там и там запросы, надо смотреть и профилировать - какой вариант экономнее, хотя может быть вообще экономия на спичках Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Загальні питання Запрос для обновления максимальной и минимальной цены товаров в категории
Eldaeron Опубліковано: 9 вересня 2021 Share Опубліковано: 9 вересня 2021 3 хвилини назад, max1985 сказав: Та это сделаю, проблема в составлении запроса, на обновление. ControllerExtensionModuleUpdateCronMINMAXPrice { $this->load->module('extension/module/updatecronminmaxprice'); $results = $this->extension_module_updatecronminmaxprice->SelectAllCategories(); // туда заганяете SELECT foreach ($results as $result) { // перебор $this->extension_module_updatecronminmaxprice->UpdateCategory($result); // А тут упдейт WHERE category_id, ну и ячейки min / max тоже будут... } } ModelExtensionModuleUpdateCronMINMAXPrice { UpdateCategory($result) { .. } } Если категорий мало то так можно, даже не парясь. А потом рефактор сделать Потому что UPDATE имя_таблицы SET поле1=значение1, поле2=значение2, поле3=значение3... WHERE условие_по_которому_следует_выбрать_строки Только так. 1 Надіслати Поділитися на інших сайтах More sharing options... Eldaeron Опубліковано: 9 вересня 2021 Share Опубліковано: 9 вересня 2021 UPDATE `oc_category` AS c INNER JOIN ( SELECT path_id AS category_id, MIN(IFNULL(ps.price, p.price)) AS min_price, MAX(IFNULL(ps.price, p.price)) AS max_price FROM oc_product AS p LEFT JOIN oc_product_to_category AS ptc USING(product_id) LEFT JOIN oc_category_path USING(category_id) LEFT JOIN oc_product_special AS ps USING(product_id) WHERE IFNULL(ps.price, p.price) > 0 AND path_id IS NOT NULL AND p.quantity > 1 AND p.date_available <= NOW() GROUP BY path_id ) AS tmp ON tmp.category_id = c.category_id SET c.min_price = tmp.min_price, c.max_price = tmp.max_price; 1 Надіслати Поділитися на інших сайтах More sharing options... niger Опубліковано: 9 вересня 2021 Share Опубліковано: 9 вересня 2021 3 часа назад, Eldaeron сказал: Контроллер в категории не соберает все товары, а только по лимиту который задаеться в настройках системы. Когда метод вызываеться getProducts, там же указан параметр => $filter_data, в котором есть sort, order, limit, start (страница * лимит)... А человеку возможно нужно всех товаром из категории. Даже те что не попадают в фильтр вызова метода getProducts. Точно, забыл уже как я это делал. Собирал эти данные и ложил в Кеш на пару суток. Вы правы. Но и там и там запросы, надо смотреть и профилировать - какой вариант экономнее, хотя может быть вообще экономия на спичках Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку
Eldaeron Опубліковано: 9 вересня 2021 Share Опубліковано: 9 вересня 2021 UPDATE `oc_category` AS c INNER JOIN ( SELECT path_id AS category_id, MIN(IFNULL(ps.price, p.price)) AS min_price, MAX(IFNULL(ps.price, p.price)) AS max_price FROM oc_product AS p LEFT JOIN oc_product_to_category AS ptc USING(product_id) LEFT JOIN oc_category_path USING(category_id) LEFT JOIN oc_product_special AS ps USING(product_id) WHERE IFNULL(ps.price, p.price) > 0 AND path_id IS NOT NULL AND p.quantity > 1 AND p.date_available <= NOW() GROUP BY path_id ) AS tmp ON tmp.category_id = c.category_id SET c.min_price = tmp.min_price, c.max_price = tmp.max_price; 1 Надіслати Поділитися на інших сайтах More sharing options... niger Опубліковано: 9 вересня 2021 Share Опубліковано: 9 вересня 2021 3 часа назад, Eldaeron сказал: Контроллер в категории не соберает все товары, а только по лимиту который задаеться в настройках системы. Когда метод вызываеться getProducts, там же указан параметр => $filter_data, в котором есть sort, order, limit, start (страница * лимит)... А человеку возможно нужно всех товаром из категории. Даже те что не попадают в фильтр вызова метода getProducts. Точно, забыл уже как я это делал. Собирал эти данные и ложил в Кеш на пару суток. Вы правы. Но и там и там запросы, надо смотреть и профилировать - какой вариант экономнее, хотя может быть вообще экономия на спичках Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0
niger Опубліковано: 9 вересня 2021 Share Опубліковано: 9 вересня 2021 3 часа назад, Eldaeron сказал: Контроллер в категории не соберает все товары, а только по лимиту который задаеться в настройках системы. Когда метод вызываеться getProducts, там же указан параметр => $filter_data, в котором есть sort, order, limit, start (страница * лимит)... А человеку возможно нужно всех товаром из категории. Даже те что не попадают в фильтр вызова метода getProducts. Точно, забыл уже как я это делал. Собирал эти данные и ложил в Кеш на пару суток. Вы правы. Но и там и там запросы, надо смотреть и профилировать - какой вариант экономнее, хотя может быть вообще экономия на спичках Надіслати Поділитися на інших сайтах More sharing options...
Recommended Posts