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

MySQL:すべての属性がリストされている製品を入手する

    -- PHP (or any other languaje) parts are hardcoded here!!!!
    
    SELECT p.*, hma.howmuchattr
    -- howmuchattr is needed by HAVING clause, 
    -- you can omit elsewhere (by surrounding SELECT or by programming languaje)
    
    FROM products AS p 
    LEFT JOIN product_attributes AS pa ON pa.product_id = p.id 
    LEFT JOIN (
        SELECT product_id, count(*) as howmuchattr
        FROM product_attributes 
        GROUP BY product_id
    ) as hma on p.id = hma.product_id
    
    WHERE 
    pa.attribute_id IN 
    (1,3)                    -- this cames from PHP (or any other languaje). Can be (1) for the other case
    GROUP BY p.id
    HAVING count(*) = howmuchattr;
    

    sqlfiddle を参照してください。 こちら
    この回答 もご覧ください



    1. WinHttp.WinHttpRequest.5.1 forTLS1.2を使用してSQLServerストアドプロシージャでオプション9を設定します

    2. ExcelデータをPostgreSQL9.3にインポートします

    3. プロシージャmysqlCRUDの作成中にエラーが発生しました

    4. 部分インデックスまたはフィルター処理されたインデックスのmysqlでの回避策?