有3张表:分类表categories,商品分类表products_to_categories,商品表products,
分类有父分类和子分类,商品不能直接属于父分类。
分类表categories记录父分类和子分类信息:
categories_id为当前分类id
parent_id字段即父分类id
商品分类表products_to_categories记录商品分类信息:
products_id:商品id
categories_id:商品所属分类id商品表products记录商品信息:
products_id :商品id
products_name:商品名称
master_categories_id:商品分类id
分类表categories:
CREATE TABLE `categories` (
  `categories_id` int(11) NOT NULL auto_increment,
  `parent_id` int(11) NOT NULL default '0'
) ENGINE=InnoDB ;商品分类表products_to_categories:
CREATE TABLE `products_to_categories` (
  `products_id` int(11) NOT NULL default '0',
  `categories_id` int(11) NOT NULL default '0',
  PRIMARY KEY  (`products_id`,`categories_id`)
) ENGINE=InnoDB;商品表products:
CREATE TABLE `products` (
  `products_id` int(11) NOT NULL auto_increment,
  `products_name` varchar(32) default NULL,
  `master_categories_id` int(11) NOT NULL default '0',
  PRIMARY KEY  (`products_id`)
) ENGINE=InnoDB
需求:按照每个大的分类随机取出3个商品。雪地里跪求!

解决方案 »

  1.   

    建议用存储过程或者直接在程序中实现。仅用SQL语句则比较麻烦。
      

  2.   

    其中categories表中parent_id如果为0即表示该分类是父分类
      

  3.   

    用程序或存储过程for each 分类
      select * from products where 分类=xxx order by rand()  limit 3