0

私は次のMySQLテーブルを持っていますproducts

id, code, name, color
1, 'D555', 'Men T-shirt', ''
2, 'D556', 'Black Men T-shirt', 'D556'
3, 'D557', 'Silver Men T-shirt', 'D556'
4, 'D558', 'Men T-shirt', ''
5, 'D559', 'Black Men T-shirt', 'D559'
6, 'D560', 'White Men T-shirt', 'D559'

たとえば、製品に別の色がある場合、列colorは空ではありません。コード「D556」の製品も黒で、銀色もあります。

を使用してSELECT * FROM productsいますが、主な製品(サブカラーなし)を選択したいと思います。つまり、次のようになり D555, D556, D558, D559ます。

  • その後、商品の下のサブカラーを選択します(洋服のeストアに関するものなので)。

そのようなテーブルの構造で可能ですか?

ご清聴ありがとうございました!

4

2 に答える 2

1
SELECT * FROM products WHERE color = '' or code = color;

次のような2つのテーブルでテーブルを正規化することを検討できます。

products(id, code, name)
alt_products(id, id_products, color)
于 2012-05-30T08:16:19.337 に答える
0

これが役に立つかもしれません:

SELECT `id`, `code`, `name`, GROUP_CONCAT(`color` SEPARATOR ', ')  as `colors`
FROM products 
GROUP BY `code`
于 2012-05-30T08:13:32.470 に答える