这样就能查询最新增加的5个分类为83的内容,不过,因为是查询最新的,所以,都以id俩排序,从最后插入的那个开始往前面查询的,也就是所谓的倒叙,显示五条,不足五条就显示全部了
我只模拟一个 输出 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 即可。
<?/*应该加一个category表记录有多少个分类
cid name
1 显示器
2 CPU
3 硬盘
*/
$sqlstr = "select * from category order by cid"
$query = @mysql_query($sqlstr) or die(mysql_error())
while($thread=mysql_fetch_array($query)){ //获取一共有多少个分类
$cgroup[] = $thread
}
$result = array()
$total = array()
for($i=0$i<count($cgroup)$i++){ //将每个分类的记录保存在数组
$sqlstr = "select * from test where category='".$cgroup['name']."'"
$query = @mysql_query($sqlstr) or die(mysql_error())
while($thread=mysql_fetch_array($query)){
$result[$i][] = $thread
}
$total[$i] = count($result[$i])
}
rsort($total)
$num = $total[0]//获取最多产品的类别个数,用于循环显示
for($j=0$j<$num$j++){
for($i=0$i<count($cgroup)$i++){
if($result[$i][$j]){ //因不同类别的产品不同,因此用最多产品的类别的产品个数作循环总次数,如有部分产品不足,不显示
echo $result[$i][$j]['id'].','.$result[$i][$j]['name'].','.$result[$i][$j]['category']."\r\n"
}
}
}
?>
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)