表から選択するユニークな値がnullの列があります

桐グエン:

私が持っているdetail_productテーブルを。

product_idcategory_idcolor_idおよびsize_idテーブルの外部キーですproductcategorycolorおよびsizeそれぞれ

id | product_id | category_id | color_id | size_id
---------------------------------------------------
1  |     1      |      1      |   null   |   null
2  |     1      |      2      |   null   |   null
3  |     1      |     null    |    1     |   null
4  |     1      |     null    |   null   |    2
5  |     2      |      2      |   null   |   null
6  |     2      |     null    |    2     |   null
7  |     3      |      1      |   null   |   null
8  |     3      |      2      |   null   |   null
9  |     3      |     null    |    1     |   null
10 |     3      |     null    |    2     |   null

どのように私は選択することができますproductどの条件を満たしています。私は理由を選択したときに捕まってしまったnullこれらの列の値。例えば、私はすべて選択するproductsに属するcategory 1category 2して持っているがcolor、SQL文は書くべき1続いているのですか?(この例では、私の期待値は、であるproduct_idリターン1および3)。

とにかくこれらスキップしないnull列または私の問題を解決するためにいくつかの文を?

私はこれを試してみましたが、それは動作しません。

SELECT detail_product.product_id 
FROM  `detail_product` 
WHERE  detail_product.category_id = 1 
AND    detail_product.category_id = 2 
AND    detail_product.color_id = 1
明菜:
SELECT product_id 
FROM detail_product
GROUP BY product_id 
HAVING FIND_IN_SET(1, GROUP_CONCAT(category_id)) -- category_id=1 must exist
   AND FIND_IN_SET(2, GROUP_CONCAT(category_id)) -- category_id=2 must exist
   AND FIND_IN_SET(1, GROUP_CONCAT(color_id))    -- color_id=1 must exist

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=28001&siteId=1