私は2つのエンティティProduct(int id ID)
とAttribute(int id ID)
を持っています。各製品はカスタム値を持つ複数の属性を持つことができるので、私はを持っています。多くのリレーションを選択
値1の属性1と値2の属性2を持つ商品を検索したいと思います。
これは可能ですか?そしてどうやって?または関係マップを変更する必要がありますか?
重要な場合は、MySQL 5.7を使用しています。
私は2つのエンティティProduct(int id ID)
とAttribute(int id ID)
を持っています。各製品はカスタム値を持つ複数の属性を持つことができるので、私はを持っています。多くのリレーションを選択
値1の属性1と値2の属性2を持つ商品を検索したいと思います。
これは可能ですか?そしてどうやって?または関係マップを変更する必要がありますか?
重要な場合は、MySQL 5.7を使用しています。
あなたは集約とhaving
を使用することができます。
select product_id
from ProductAttribute
where (attribute_id, value) in ((1, 2), (2, 3), (3, 4))
group by product_id
having count(*) = 3;
「3」が比較されているリスト内の属性の数です。
Tnx。それは素晴らしいように聞こえるが、私の本当の問題はスパンの間の 'value'をチェックすることです。この場合、適切なクエリは何ですか? – vakarami
@kbarami。 。 。あなたは私がそれに答えた後に質問を変更しました。それは失礼です。これは、ダウンボックスを描くことができる答えを無効にします。 –
サンプルテーブルのデータと期待される結果をフォーマット済みのテキストとして追加します。現在のクエリの試行も表示してください。 – jarlh