栏目表CREATE TABLE `classes` (
`class_id` int(11) NOT NULL auto_increment,
`class_name` varchar(255) NOT NULL default '',
`class_father` int(11) default NULL,
PRIMARY KEY (`class_id`)
) ENGINE=InnoDB AUTO_INCREMENT=121 DEFAULT CHARSET=utf8 COMMENT='栏目';通栏图片表
CREATE TABLE `leaderboard` (
`id` int(11) NOT NULL auto_increment,
`path` varchar(255) default NULL,
`link_url` varchar(255) default NULL,
`class_id` int(11) default NULL,
PRIMARY KEY (`id`),
KEY `Leader_FK_classId` (`class_id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8 COMMENT='?8';其中栏目表中class_father 存的是栏目的父亲ID,通栏图片表class_id 和栏目表的主键关联现在我要查的是根据一个栏目的ID得到他的所有子栏目的ID,名称 和 通栏图片表的所有属性。
select c.*,b.* from Classes c left join Leaderboard b on c.class_father = b.class_id where c.class_father = 2 order by c.class_id;
我试过上面的这句SQL,有点问题,就是比如通栏图片表有相对应的3条记录,栏目表的记录也会显示3次,有没有办法只显示一次呢。或者还有其他更好的SQL写法,请高手指点一下!
`class_id` int(11) NOT NULL auto_increment,
`class_name` varchar(255) NOT NULL default '',
`class_father` int(11) default NULL,
PRIMARY KEY (`class_id`)
) ENGINE=InnoDB AUTO_INCREMENT=121 DEFAULT CHARSET=utf8 COMMENT='栏目';通栏图片表
CREATE TABLE `leaderboard` (
`id` int(11) NOT NULL auto_increment,
`path` varchar(255) default NULL,
`link_url` varchar(255) default NULL,
`class_id` int(11) default NULL,
PRIMARY KEY (`id`),
KEY `Leader_FK_classId` (`class_id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8 COMMENT='?8';其中栏目表中class_father 存的是栏目的父亲ID,通栏图片表class_id 和栏目表的主键关联现在我要查的是根据一个栏目的ID得到他的所有子栏目的ID,名称 和 通栏图片表的所有属性。
select c.*,b.* from Classes c left join Leaderboard b on c.class_father = b.class_id where c.class_father = 2 order by c.class_id;
我试过上面的这句SQL,有点问题,就是比如通栏图片表有相对应的3条记录,栏目表的记录也会显示3次,有没有办法只显示一次呢。或者还有其他更好的SQL写法,请高手指点一下!
你既然要得要的这个那记录有多少条就会显示几条了