Я пытаюсь получить все продукты из базы данных одним запросом. Я застрял в ценовой части:Получить продукты из базы данных
У VirtueMart есть таблица с именем #__vm_product, а другая - #__vm_product_price.
Если продукт имеет родительский продукт, это означает, что продукт наследует все от родителя, если в нем не задано иное.
таблиц выглядеть следующим образом:
/* #__vm_product PARTIAL */
int - product_id
int - product_parent_id
varchar - product_name
/* #__vm_product_price PARTIAL */
int - product_id
decimal - product_price
int - mdate
Я сделал следующий запрос, который получает все продукты с их ценой:
SELECT
p.product_id AS id,
product_name AS name,
product_price AS price,
p.product_parent_id AS parent,
MAX(pp.mdate) AS last_updated
FROM jos_vm_product p
LEFT JOIN jos_vm_product_price pp ON p.product_id = pp.product_id
GROUP BY p.product_id
ORDER BY p.product_id
Проблемой с этим запросом является то, что он не проверяет их цена указана. Так что если это детский продукт, и у него нет цены, он должен показать цену своего родителя.
Может ли кто-нибудь помочь мне с этим?
Примечание: Если кто-нибудь знает более простой способ, чтобы получить все продукты (с ценой) из базы данных VirtueMart, пожалуйста, не возражаю, чтобы сказать мне :)
EDIT: Цена никогда не нулевой. Если ребенок должен наследовать от своего родителя, у него просто нет ценового ряда в jos_vm_product_price
Я не уверен, как исправить этот запрос. Он также не использует jos_vm_product_price, из-за чего мне трудно найти, какой из них должен быть ценовой таблицей. – MrSoundless
Извините, он возвращает только дочерние продукты. Также прочитайте примечание EDIT в главном посте, потому что я сделал небольшую ошибку в своих объяснениях. – MrSoundless
См. Мое обновление. Я предположил из вашего предыдущего текста, что все продукты, которые вы хотели, имели родителей. – RedFilter