私はテーブルの商品を持っています。すべての権利テーブルが設定されている必要があるレコードを登録するにはどうすればよいですか?
製品には多くのものがありますからproduct_featuresです。
私はすべてを返すようにしたい、そしてそれはを持って製品を返しますので、ケースの特徴1、及び機能2の両方を持っているだけ製品なので、一般的なLEFT JOINをが、この中では動作しませんフィーチャー1またはフィーチャー2
誰かが正しい方向に向けることができますか?
私はテーブルの商品を持っています。すべての権利テーブルが設定されている必要があるレコードを登録するにはどうすればよいですか?
製品には多くのものがありますからproduct_featuresです。
私はすべてを返すようにしたい、そしてそれはを持って製品を返しますので、ケースの特徴1、及び機能2の両方を持っているだけ製品なので、一般的なLEFT JOINをが、この中では動作しませんフィーチャー1またはフィーチャー2
誰かが正しい方向に向けることができますか?
あなたは、内側のことで、グループに参加し、answwrがセットでfeatursは、OLAP機能を通じて一度だけ
存在しているという事実に基づいている
select p.* from products as p
inner join product_features as pf on pf.product_id = p.id
inner join features as f on f.id = pf.feature_id
where f.feature_id in ('feature1', 'feature2')
group by product
having count(*) =2;
ものを用いることができ、あなたはこれを達成することができます。 以下のクエリは、各製品の特徴を数えます。 2つの機能を持つすべての製品を返します。
select pid, pname, fid
from (
select t1.pid, t1.pname,t2.fid,count(distinct fid) over(partition by t1.pid, t1.pname) cnt from
products t1 left join product_features t2
on t1.pid = t2.pid
) a
where cnt = 2
order by 1,2,3
2つの内部結合を使用できます。 –