Да это понятно, только деньги на это в проекте не выделены, да и самому хотелось бы понять принцип.
На собственный коммерческий проект не претендую, но буду излагать суть решения, как я понимаю.
Поэтапно, итак на сегодняшний момент в голове сформулировалась идея сначала вытащить id атрибутов характеристики, по каждому из которых будет считаться кол-во товара.
С помощью следующего sql-запроса это несложно реализовать:
SELECT `id` AS 'brand_id'
FROM `#_jshopping_products_extra_field_values`
WHERE `field_id` =5
В консоли sql запросов отрабатывает хорошо и выводит в результирующую таблицу столбец с названием brand_id
Далее есть второй sql-запрос который суммирует кол-во товаров, у которых есть соответствующий атрибут характеристики, исключая при этом неопубликованные товары.
Текст запроса:
SELECT SUM(product_quantity)
FROM `vmuag_jshopping_products`
WHERE `extra_field_5`=30 AND `product_publish`=1
Запрос также отрабатывает нормально, и возвращает результат- сумму.
Теперь задача объединить эти два запроса, чтобы в WHERE `extra_field_5`= второго запроса, подставлять значения из первой результирующей таблицы, надо перебрать их все.
Некоторые соображения на этот счет:
1) Результат первого запроса вывести в php массив, а затем с помощью forearch перебирать элементы этого массива и подставлять переменную в WHERE `extra_field_5`= ... на счет этого способа- смущает, то, что в цикле будет постоянно отправляться запрос к базе sql.
2) Другая идея- не хранить значения первого запроса в массиве php, а сохранить их в результирующей таблице и привязать к ней с помощью JOIN второй столбец в котором будет количество товара по каждой характеристике.
3) Еще вариант создать новую таблицу, которая будет постоянно хранить эти значения в базе и просто выводить из нее количество по id
А теперь вопрос, к знатокам Joomla, какое решение предпочтительнее? Стоит ли использовать один большой запрос к базе или несколько запросов поменьше? И как оптимальнее организовать хранение информации, которая выбирается из базы?
Буду благодарен за любые советы и конструктивную критику.