如果属性类目是固定的,简单点
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个商品
你是不是要这样的效果呀?
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)