2017-07-21 20 views
1

私は2つのエンティティProduct(int id ID)Attribute(int id ID)を持っています。各製品はカスタム値を持つ複数の属性を持つことができるので、私はを持っています。多くのリレーションを選択

値1の属性1と値2の属性2を持つ商品を検索したいと思います。

これは可能ですか?そしてどうやって?または関係マップを変更する必要がありますか?

重要な場合は、MySQL 5.7を使用しています。

+1

サンプルテーブルのデータと期待される結果をフォーマット済みのテキストとして追加します。現在のクエリの試行も表示してください。 – jarlh

答えて

3

あなたは集約と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」が比較されているリスト内の属性の数です。

+0

Tnx。それは素晴らしいように聞こえるが、私の本当の問題はスパンの間の 'value'をチェックすることです。この場合、適切なクエリは何ですか? – vakarami

+0

@kbarami。 。 。あなたは私がそれに答えた後に質問を変更しました。それは失礼です。これは、ダウンボックスを描くことができる答えを無効にします。 –

関連する問題