有两张表,一张产品表(product),一张分类表(category)
产品表有三个字段id,name,cat_id(分类id)
分类表有三个字段id,name,parent_id(父类id)
我现在要查每一个分类的一个产品,如果某个分类没有产品,就用特殊字符表示(0或者null的都可以)有些分类没有数据
CREATE TABLE `product` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(100) DEFAULT NULL,
`cat_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;CREATE TABLE `category` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(20) DEFAULT NULL,
`parent_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

解决方案 »

  1.   

    结果集的行数和c表的行数相同,显示出来的产品只要属于该类别即可;如果某个类别没有产品,产品列显示为NULL:
    SELECT c.name,MAX(p.name) FROM category AS c 
        LEFT JOIN product AS p 
    ON p.cat_id=c.id
    GROUP BY c.name
      

  2.   

    select *
    from category left join product where category.id=product.cat_id(
    group by category.id=