mysql 商品分类属性 如何设计 才能筛选数据

mysql 商品分类属性 如何设计 才能筛选数据,第1张

提供两种 *** 作简便的实现方式:

如果属性类目是固定的,简单点

product结构:分类名颜色 尺码

T恤白色L

搜索条件:where 分类名="T恤" and 颜色="白色" and 尺码="L"

不固定的话,属性值做拼接

分类名 属性

T恤,白色,L,

搜索条件:where 分类名="T恤" and 属性 like '%,白色,%' and 尺码 like '%,L,%'

我只模拟一个   输出 3条商品信息的效果了.

否则 文字又要超长了

CREATE TABLE sp_classify (

  cid  INT,

  cname  VARCHAR(10)

)

INSERT INTO sp_classify  VALUES(1,  '笔记本')

INSERT INTO sp_classify  VALUES(2,  '台式机')

INSERT INTO sp_classify  VALUES(3,  '超级本')

INSERT INTO sp_classify  VALUES(4,  '平板')

CREATE TABLE sp_goods (

   cid  INT,

   gtitle  VARCHAR(50)

)

INSERT INTO sp_goods VALUES(1,  '笔记本1')

INSERT INTO sp_goods VALUES(1,  '笔记本2')

INSERT INTO sp_goods VALUES(1,  '笔记本3')

INSERT INTO sp_goods VALUES(1,  '笔记本4')

INSERT INTO sp_goods VALUES(1,  '笔记本5')

INSERT INTO sp_goods VALUES(2,  '台式机1')

INSERT INTO sp_goods VALUES(2,  '台式机2')

INSERT INTO sp_goods VALUES(2,  '台式机3')

INSERT INTO sp_goods VALUES(2,  '台式机4')

INSERT INTO sp_goods VALUES(2,  '台式机5')

INSERT INTO sp_goods VALUES(3,  '超级本1')

INSERT INTO sp_goods VALUES(3,  '超级本2')

INSERT INTO sp_goods VALUES(3,  '超级本3')

INSERT INTO sp_goods VALUES(3,  '超级本4')

INSERT INTO sp_goods VALUES(3,  '超级本5')

INSERT INTO sp_goods VALUES(4,  '平板1')

INSERT INTO sp_goods VALUES(4,  '平板2')

INSERT INTO sp_goods VALUES(4,  '平板3')

INSERT INTO sp_goods VALUES(4,  '平板4')

INSERT INTO sp_goods VALUES(4,  '平板5')

SELECT

  resultName

FROM

(

SELECT  0  as  seqNo,  cid,  cname  as resultName FROM  sp_classify

UNION ALL

SELECT  CASE WHEN @cn != cid THEN @rownum:= 1 

        ELSE @rownum:= @rownum + 1  END  as  seqNo,  

@cn := cid AS cid,  

gtitle  as resultName  FROM  sp_goods,  (SELECT @rownum:=1) r, (SELECT @cn:=0) p

) subQuery

WHERE

  SeqNo <=3

ORDER BY

  cid,  seqNo

  

+------------+

| resultName |

+------------+

| 笔记本     |

| 笔记本1    |

| 笔记本2    |

| 笔记本3    |

| 台式机     |

| 台式机1    |

| 台式机2    |

| 台式机3    |

| 超级本     |

| 超级本1    |

| 超级本2    |

| 超级本3    |

| 平板       |

| 平板1      |

| 平板2      |

| 平板3      |

+------------+

16 rows in set (0.00 sec)

你需要 10行商品的, 就是简单把 sql 语句中的  WHERE   SeqNo <=3

修改为  WHERE   SeqNo <= 10 即可。

看看你的问题, 不是很明白。

要不我举个例子, 确认一下你的需求。

例如你的 item 表有下面这些数据。

分类代码cid商品代码num_iid时间dateline

1 1 2013-05-01

1 2 2013-05-02

1 3 2013-05-03

1 4 2013-05-04

1 5 2013-05-05

1 6 2013-05-06

2 7 2013-05-07

2 8 2013-05-08

2 9 2013-05-09

2 10 2013-05-10

2 11 2013-05-11

2 12 2013-05-12

......

很多个分类, 很多个商品, 很多个时间

......

你预期的结果是

1 2 2013-05-02

1 3 2013-05-03

1 4 2013-05-04

1 5 2013-05-05

1 6 2013-05-06

2 8 2013-05-08

2 9 2013-05-09

2 10 2013-05-10

2 11 2013-05-11

2 12 2013-05-12

每个分类都要显示

但是只显示当前分类下的 最新的 5个商品

你是不是要这样的效果呀?


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/6146228.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-16
下一篇 2023-03-16

发表评论

登录后才能评论

评论列表(0条)

保存