1つのクエリでデータベースからすべての製品を取得しようとしています。私は価格の部分で立ち往生しています:
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データベースからすべての製品(価格付き)を取得する簡単な方法を誰かが知っている場合は、私に教えてください:)
編集:価格がnullになることはありません。子がその親から継承することになっている場合、jos_vm_product_priceに価格行がありません。