2017-02-27 18 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