各位老师好,我想请教,以下数据中,如何列出所有【sql_comefrom】中的发稿信息 不管有没有投稿,都进行排名显示。
sql如下:
-- ----------------------------------------------------------
-- 表的结构 `sql_comefrom`
--CREATE TABLE IF NOT EXISTS `sql_comefrom` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`fromname` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=14 ;--
-- 转存表中的数据 `sql_comefrom`
--INSERT INTO `sql_comefrom` (`id`, `fromname`) VALUES
(1, 'A县'),
(2, 'B县'),
(3, 'C县'),
(4, 'D县'),
(5, 'E县'),
(6, 'F县'),
(7, 'G县'),
(8, 'H县'),
(9, 'I县'),
(10, 'J县'),
(11, 'K县'),
(12, 'L县'),
(13, 'M县');-- ----------------------------------------------------------
-- 表的结构 `sql_content`
--CREATE TABLE IF NOT EXISTS `sql_content` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(80) NOT NULL,
`comefrom` varchar(20) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=11 ;--
-- 转存表中的数据 `sql_content`
--INSERT INTO `sql_content` (`id`, `title`, `comefrom`) VALUES
(1, '习近平:发挥亚太引领作用发展开放型经济', '|5'),
(2, '美德3名科学家分享诺贝尔生理学或医学奖', '|5'),
(3, '云南调离骂人旅游局人员 被疑变相保护', '|2'),
(4, '中方回应美日澳就钓鱼岛问题联合声明', '|4'),
(5, '气象台:京冀晋豫有重度霾 北京天津已解除预警', '|6'),
(6, '“黄金周”铁路运客破7000万人 创历史新高', '|1'),
(7, '市民24年前存2000元预期收益22万 到期银行只付8400元', '|11'),
(8, '埃及多地爆发冲突 51人死亡268人受伤', '|12'),
(9, '诺贝尔奖今起陆续揭晓 村上春树再成热门人选', '|7'),
(10, '八达岭长城6天清理109吨垃圾 清洁工背下景区', '|2');
查询语句为:SELECT com.fromname,count( replace( win.comefrom, '|', '' ) ) AS tgnum
FROM `sql_content` win
LEFT JOIN `sql_comefrom` com
ON com.id = replace( win.comefrom, '|', '' )
GROUP BY win.comefrom DESC
ORDER BY tgnum DESC得到结果
fromname tgnum
B县 2
E县 2
G县 1
L县 1
K县 1
A县 1
F县 1
D县 1现想列出所有县的信息,没有的话,该县的 tgnum=0,谢谢
sql如下:
-- ----------------------------------------------------------
-- 表的结构 `sql_comefrom`
--CREATE TABLE IF NOT EXISTS `sql_comefrom` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`fromname` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=14 ;--
-- 转存表中的数据 `sql_comefrom`
--INSERT INTO `sql_comefrom` (`id`, `fromname`) VALUES
(1, 'A县'),
(2, 'B县'),
(3, 'C县'),
(4, 'D县'),
(5, 'E县'),
(6, 'F县'),
(7, 'G县'),
(8, 'H县'),
(9, 'I县'),
(10, 'J县'),
(11, 'K县'),
(12, 'L县'),
(13, 'M县');-- ----------------------------------------------------------
-- 表的结构 `sql_content`
--CREATE TABLE IF NOT EXISTS `sql_content` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(80) NOT NULL,
`comefrom` varchar(20) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=11 ;--
-- 转存表中的数据 `sql_content`
--INSERT INTO `sql_content` (`id`, `title`, `comefrom`) VALUES
(1, '习近平:发挥亚太引领作用发展开放型经济', '|5'),
(2, '美德3名科学家分享诺贝尔生理学或医学奖', '|5'),
(3, '云南调离骂人旅游局人员 被疑变相保护', '|2'),
(4, '中方回应美日澳就钓鱼岛问题联合声明', '|4'),
(5, '气象台:京冀晋豫有重度霾 北京天津已解除预警', '|6'),
(6, '“黄金周”铁路运客破7000万人 创历史新高', '|1'),
(7, '市民24年前存2000元预期收益22万 到期银行只付8400元', '|11'),
(8, '埃及多地爆发冲突 51人死亡268人受伤', '|12'),
(9, '诺贝尔奖今起陆续揭晓 村上春树再成热门人选', '|7'),
(10, '八达岭长城6天清理109吨垃圾 清洁工背下景区', '|2');
查询语句为:SELECT com.fromname,count( replace( win.comefrom, '|', '' ) ) AS tgnum
FROM `sql_content` win
LEFT JOIN `sql_comefrom` com
ON com.id = replace( win.comefrom, '|', '' )
GROUP BY win.comefrom DESC
ORDER BY tgnum DESC得到结果
fromname tgnum
B县 2
E县 2
G县 1
L县 1
K县 1
A县 1
F县 1
D县 1现想列出所有县的信息,没有的话,该县的 tgnum=0,谢谢
FROM `sql_content` win
right JOIN `sql_comefrom` com
ON com.id = replace( win.comefrom, '|', '' )
GROUP BY win.comefrom DESC
ORDER BY tgnum DESC
B县 0
H县 0
I县 0
J县 0
M县 0
并未列出,该如何解决呢 谢谢
LEFT JOIN `sql_content` b
ON a.id = REPLACE( b.comefrom, '|', '' )
GROUP BY a.fromname