Php MySQL:如何列出子类别及其项,将它们限制为3个?

Php MySQL:如何列出子类别及其项,将它们限制为3个?,php,mysql,sql,Php,Mysql,Sql,我想检索子类别数据及其项,每个子类别限制为3项 sub category 1 item1 item2 item3 sub category 2 item1 item2 item3 sub category 3 item1 item2 item3 这是我的桌子结构 CREATE TABLE `sub_categories` ( `id` INT(11) NOT NULL, `category_id` INT(11) NULL DEFAULT NULL, `title` VARCHAR(255

我想检索子类别数据及其项,每个子类别限制为3项

sub category 1
item1
item2
item3

sub category 2
item1
item2
item3

sub category 3
item1
item2
item3
这是我的桌子结构

CREATE TABLE `sub_categories` (
`id` INT(11) NOT NULL,
`category_id` INT(11) NULL DEFAULT NULL,
`title` VARCHAR(255) NULL DEFAULT NULL,
`slug` VARCHAR(255) NULL DEFAULT NULL,
`active_start` DATETIME NULL DEFAULT NULL,
`active_end` DATETIME NULL DEFAULT NULL,
`created` DATETIME NULL DEFAULT NULL,
PRIMARY KEY (`id`)
)]]
COLLATE='utf8_general_ci'
ENGINE=InnoDB;
接合台

CREATE TABLE `sub_category_items` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`item_id` INT(11) NOT NULL,
`sub_category_id` INT(11) NOT NULL,
`created` DATETIME NOT NULL,
PRIMARY KEY (`id`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB
AUTO_INCREMENT=64;



 CREATE TABLE `items` (
 `id` INT(11) NOT NULL AUTO_INCREMENT,
 `title` VARCHAR(255) NULL DEFAULT NULL,
 `created` DATETIME NOT NULL,
 PRIMARY KEY (`id`)
 )
 COLLATE='utf8_general_ci'
 ENGINE=InnoDB
 AUTO_INCREMENT=64;
这是我的MySQL查询

SELECT `Item`.`title`,`SubCategoryItem`.`id`, `SubCategoryItem`.`item_id`, `SubCategoryItem`.`sub_category_id`, `SubCategoryItem`.`created`, `SubCategory`.`id`, `SubCategory`.`category_id`, `SubCategory`.`title`, `SubCategory`.`active_start`, `SubCategory`.`active_end`, `SubCategory`.`created`
FROM `items` AS `Item`
left JOIN `sub_category_item` AS `SubCategoryItem` ON (`SubCategoryItem`.`item_id`=`Item`.`id`) right JOIN `sub_categories` AS `SubCategory` ON (`SubCategoryItem`.`sub_category_id`=`SubCategory`.`id`)
WHERE `SubCategory`.`category_id` = 21 ORDER BY CASE 
  WHEN MONTH(`SubCategory`.`active_start`) = MONTH(CURDATE()) THEN 0
  WHEN MONTH(`SubCategory`.`active_end`) >= MONTH(CURDATE()) THEN 1
  WHEN MONTH(`SubCategory`.`active_start`) <= MONTH(CURDATE()) THEN 2
  ELSE 3
END , MONTH(`SubCategory`.`active_start`) desc

我做错了什么?

你到底想做什么?我想列出子类别及其关联数据,将它们限制在3个这是一个前n个组查询,在mysql中不容易做到。您的案例陈述是为了什么?在当月订购