Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

SELECT p.product_id, IF (p.price = '0'


Petr

Recommended Posts

это все тело его

SELECT p.product_id, IF (p.price = '0', (SELECT MIN(ppr.price) FROM oc_product as ppr, oc_product_product_option_value as ppov WHERE ppov.product_option_id = ppr.product_id AND ppov.product_id = p.product_id), p.price) as new_price, (SELECT COUNT(ppov2.product_option_id) FROM oc_product_product_option_value as ppov2 WHERE p.product_id = ppov2.product_option_id) as child, (SELECT AVG(rating) AS total FROM oc_review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating FROM oc_product p LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '2' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' GROUP BY p.product_id HAVING child = '0' ORDER BY p.date_added DESC LIMIT 0,6

а вот тот код который его формирует, с этим немного затрудняюсь, дело в том что он появляется когда в категорию переходишь, или когда на главную заходишь, где смотреть? oc_category.tpl? Если напрямую в товар все ок.

Надіслати
Поділитися на інших сайтах


А откуда такой запрос взялся? Это в ядре 0_о

 

Ну, по делу, индекс для price первым делом создать, чтобы запрос 

SELECT MIN(ppr.price) FROM oc_product as ppr, oc_product_product_option_value as ppov WHERE ppov.product_option_id = ppr.product_id AND ppov.product_id = p.product_id

резвее работал. Потом надо что-то думать в направлении

SELECT COUNT(ppov2.product_option_id) FROM oc_product_product_option_value as ppov2 WHERE p.product_id = ppov2.product_option_id

Например, можно попробовать увеличить буфер MySQL сервера...

 

Вот это тоже печально (если отзывов много) и непонятно насколько полезна информация:

SELECT AVG(rating) AS total FROM oc_review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id

MySQL в подзапросах лимиты не поддерживает, кажется... Да? Тогда все плохо.

Надіслати
Поділитися на інших сайтах

в ядре такого точно нет

 

 

SELECT p.product_id, IF (p.price = '0', (SELECT MIN(ppr.price) FROM oc_product as ppr, oc_product_product_option_value as ppov WHERE ppov.product_option_id = ppr.product_id AND ppov.product_id = p.product_id), p.price) as new_price, (SELECT COUNT(ppov2.product_option_id) FROM oc_product_product_option_value as ppov2 WHERE p.product_id = ppov2.product_option_id) as child, (SELECT AVG(rating) AS total FROM oc_review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating FROM oc_product p LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '2' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' GROUP BY p.product_id HAVING child = '0' ORDER BY p.date_added DESC LIMIT 0,6
Надіслати
Поділитися на інших сайтах

Например, можно попробовать увеличить буфер MySQL сервера...

Это как себе в живот запихнуть полтонны апельсинов. То есть, рано или поздно начнет болеть или хуже ...

в данном случае хуже будет)

Что за гавно-сборку скачали на этот раз?

Качайте ocstore и проблемы исчезнут

Надіслати
Поділитися на інших сайтах

Ну, если то что я посоветовал окажется "припарками покойнику", то надо создавать дополнительные таблицы и записывать в них нужные данные... Тут, собственно, я не вижу пока других вариантов.

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.