2017-02-27 44 views
1

我开始用mysql和我有这个问题使用“计数”为MySQL的难度查询

的问题是,我想打一个特定表的相关trablas在那里我有人民的性别之间的查询,无论是女人还是男人。

这将是我的代码,以使查询

SELECT c.Nom_carre as Preparatory, count(a.Gen_alum) as Gender 
FROM alumno a, carrera c WHERE a.idCarrera=c.idCarrera 

此代码计数(a.Gen_alum)显示我的总的人无论男女。 我想单独了解一下,有多少男性和多少女性?

+0

您应该使用conditianal聚合('COUNT(CASE改变这种WHEN a.Gen_alum = 'M' END)作为total_m ')或'GROUP BY a.Gen_alum WITH ROLLUP'。但只要你没有明确定义表格之间的关系,就很难/不可能给你正确的答案。还要注意,选择不在group by子句中的任何列(如'c.Nom_carre')是没有意义的。 –

回答

0

使用count与组你应该使用与join

SELECT c.Nom_carre as Preparatory, count(a.Gen_alum) as Gender 
FROM alumno a 
join carrera c on a.idCarrera=c.idCarrera 
group by a.Gen_alum; 

更新

使用Field()到显示器垂直数据作为您的要求

SELECT c.Nom_carre as Preparatory, sum(field(a.Gen_alum,'male')) as Male,sum(field(a.Gen_alum,'Female')) as Female 
FROM alumno a 
join carrera c on a.idCarrera=c.idCarrera 
group by a.idCarrera; 

这里 '男性' 和 '女性',与您希望从列数

+0

是好的,但是,我把垂直的性别,不要横向放置 – Jorge1023

+0

请给我看你的Gen_alum数据 – denny

+0

你是一个天才,谢谢你,我工作完美!我为自己缺乏一致性而道歉一点,当我问,我说的很少英语:/ – Jorge1023

0

请尝试以下代码。

SELECT c.Nom_carre AS Preparatory, 
     count(a.Gen_alum) AS Gender 
FROM alumno a, 
    carrera c 
WHERE a.idCarrera=c.idCarrera 
GROUP BY a.Gen_alum 

它可以帮助你。

+0

这将给出一个错误:未知的列在性别按条款 –

0

在这里,你需要通过

SELECT c.Nom_carre as Preparatory, count(a.Gen_alum) as Gender 
FROM alumno a 
JOIN carrera c ON a.idCarrera = c.idCarrera 
GROUP BY a.Gen_alum 
+0

是好的,但我把性别垂直,不要把它横向 – Jorge1023

+0

共享数据库结构...不明白你的意思是纵向或横向 – Naincy