sql >> データベース >  >> RDS >> Mysql

複数の属性で製品を選択し、代わりにANDを使用して、または連結子、データモデルEAV

    サブクエリは次のようになります:

    SELECT
      attributes_entity.product_id
    FROM
      attributes_entity INNER JOIN attributes
      ON attributes_entity.attribute_id=attributes.id
      INNER JOIN attributes_values ON
      attributes_entity.value_id=attributes_values.id 
    WHERE 
      (attributes.name="Memory" AND attributes_values.value="16GB") 
      OR
      (attributes.name="Color" AND attributes_values.value="Gold")
    GROUP BY
      attributes_entity.product_id
    HAVING
      COUNT(DISTINCT attributes.name)=2
    

    このソリューションは、GROUPBYサブクエリを使用します。 ORを使用する必要があります。これは、同じ行で属性を同時にMemoryとColorにすることはできないため、両方ともtrueである可能性がありますが、異なる行である可能性があります。 COUNT(DISTINCT attributes.name)は、ColorまたはMemoryのいずれかの属性の数をカウントします。2の場合、最初の条件が真である行が少なくとも1つあり、他の条件も真である行が1つあります。




    1. PHP SQL STMT SELECT複数のLIKE?出来ますか?

    2. if(!isset($ _ SESSION ['username']))により、ユーザーはverify_login_form.phpからindex.phpにリダイレクトされます。

    3. PDOprepare()を使用したPHPSQLビューカウンター

    4. 2つの関連するテーブル間で欠落している行を見つけるためのSQLクエリ