桐グエン:
私が持っているdetail_product
テーブルを。
product_id
、category_id
、color_id
およびsize_id
テーブルの外部キーですproduct
、category
、color
および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 1
とcategory 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