只查一张表,结构和数据如下
==========================
CREATE TABLE IF NOT EXISTS `member` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(30) NOT NULL,
`tuijianren_id` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `tuijianren_id` (`tuijianren_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=9 ;
INSERT INTO `member` (`id`, `name`, `tuijianren_id`) VALUES
(1, 'aaa', 0),
(2, 'bbb', 1),
(3, 'ccc', 1),
(4, 'ddd', 1),
(5, 'eee', 2),
(6, 'fff', 2),
(7, 'ggg', 3);
=========================
查询结果需求四个字段如下:
[一] id
[二] name
[三] tuijian_name
[四] total
id 和 name 是本表中所有记录的原有字段
tuijianren_name 是表中 tuijianren_id 对应本表 id 得出的 name,如果 tuijianren_id 是 0 或者 tuijianren_id 没有对应的 id 记录则为 null
total 是统计出本表中每条记录的 id 出现在其他记录 tuijianren_id 的总数
最终理想的查询结果如下
我左连接又换右连接怎么写都不对
SELECT m.id, m.name, COUNT( `m`.id ) AS total, m2.name AS tuijian_name
FROM member m
RIGHT JOIN member m2 ON m.tuijianren_id = m2.id
GROUP BY `m2`.id
LIMIT 0 , 30
请问如何写这条语句满足这个需求?
请老司机赐教一下 谢谢!!!
==========================
CREATE TABLE IF NOT EXISTS `member` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(30) NOT NULL,
`tuijianren_id` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `tuijianren_id` (`tuijianren_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=9 ;
INSERT INTO `member` (`id`, `name`, `tuijianren_id`) VALUES
(1, 'aaa', 0),
(2, 'bbb', 1),
(3, 'ccc', 1),
(4, 'ddd', 1),
(5, 'eee', 2),
(6, 'fff', 2),
(7, 'ggg', 3);
=========================
查询结果需求四个字段如下:
[一] id
[二] name
[三] tuijian_name
[四] total
id 和 name 是本表中所有记录的原有字段
tuijianren_name 是表中 tuijianren_id 对应本表 id 得出的 name,如果 tuijianren_id 是 0 或者 tuijianren_id 没有对应的 id 记录则为 null
total 是统计出本表中每条记录的 id 出现在其他记录 tuijianren_id 的总数
最终理想的查询结果如下
我左连接又换右连接怎么写都不对
SELECT m.id, m.name, COUNT( `m`.id ) AS total, m2.name AS tuijian_name
FROM member m
RIGHT JOIN member m2 ON m.tuijianren_id = m2.id
GROUP BY `m2`.id
LIMIT 0 , 30
请问如何写这条语句满足这个需求?
请老司机赐教一下 谢谢!!!
