0
ブランド、サイズなどのカスタムフィールドを商品に適用することができる属性システムがあります。 サイトのフロントエンドにリストが表示されます製品および属性にフィルタリングすると期待する項目の数のリストの:属性クエリ。内部にヒットしない属性も含まれています
- ブランドA(12)
- ブランドB(8)
- ...
サイズ:
- サイズ(9)
- サイズb私も属性のリストを更新すると、フィルタ後(11)
には「ヒット」を持っていないそれらのレコードが含まれます。私の現在のクエリでは、ヒットしたレコードしか取得できません。
要約:0アイテムの属性を取得するにはどうすればよいですか?
私はおそらく、テーブルスキーマを助けることができるこのクエリ(選択された1つの属性フィルター付き一例)
SELECT
attr.id, attr.title
, attrval.value, attrval.id as valid
, COUNT(attrlink.id) AS attrcount
FROM #__foc_users_attributes AS attr
LEFT JOIN #__foc_users_attr_val AS attrval
ON attrval.attrid = attr.id AND attrval.value !=''
LEFT JOIN #__foc_users_attr_link AS attrlink
ON (attrlink.valueid = attrval.id)
LEFT JOIN #__foc_users_items AS item
ON (item.id = attrlink.itemid)
INNER JOIN #__foc_users_attr_link AS attrlink1
ON attrlink1.itemid = item.id
AND ((attrlink1.attrid=1 AND attrlink1.valueid=33))
WHERE item.published=1 AND attr.published = 1 AND attrval.value != ''
GROUP BY attrval.id
を持っています。解決策は、最初のテーブルとして#__foc_users_itemsを書いて残りのすべてのものに対して左の結合を行うことです。なぜ#__foc_users_attr_linkには左結合ではなく内部結合があるのですか? – danihp
あなたは正しいです。私は、それぞれの属性グループごとに左結合を使用して、今すぐ動作させてください!返信ありがとう。 – Bert