各位老师好,我想请教,以下数据中,如何列出所有【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,谢谢

解决方案 »

  1.   

    SELECT com.fromname,count( replace( win.comefrom, '|', '' ) ) AS tgnum
    FROM `sql_content` win
    right JOIN `sql_comefrom` com
    ON com.id = replace( win.comefrom, '|', '' )
    GROUP BY win.comefrom DESC
    ORDER BY tgnum DESC
      

  2.   

    版主您好,感谢您的回复。但是剩余的
    B县 0
    H县 0
    I县 0
    J县 0
    M县 0
    并未列出,该如何解决呢 谢谢
      

  3.   

    SELECT a.fromname,COUNT(b.id) FROM `sql_comefrom` A 
    LEFT JOIN `sql_content` b
    ON a.id = REPLACE( b.comefrom, '|', '' )
    GROUP BY  a.fromname
      

  4.   

    group  by后  分组的 列的名称错了,按照  sql_comefrom的 fromname  分组
      

  5.   

    分组排序应该按照sql_comefrom里面的字段来排