2012-03-31 76 views
0

我有一張名爲'teachers'的表格。 教師表具有以下字段MySQL GROUP BY主題

  • ID
  • schoolnumber
  • 性別
  • 姓氏
  • subjectgroup
  • 狀態
  • 時間

我想根據他們的主題(主題組)來顯示所有的老師。

這裏是我當前的查詢:

SELECT * FROM teachers WHERE status = '1' GROUP BY subjectgroup 

它是正確的分組教師,但它只能顯示每科1名教師。

輸出:

  • 科學:

    • ScienceMan先生
  • 英語:

    • 太太英語
  • 數學:

    • 數學先生

,但我要的是教師按學科

上市

應該有羣體不止一個老師。

感謝您的幫助!

回答

1

Group by將這些行分組成一行。這聽起來像你想要order by主題,而不是

+0

謝謝爲您的及時答案。是的,命令由做的工作然而輸出如下:科學(標題) - > ScienceMan1先生科學(標題再次重複)ScienceMan2先生等。是否可能輸出每個主題標題一次? – James 2012-03-31 09:33:20

+0

這是您在顯示時使用您的編程過濾出該數據的位置 - 如果主題與最後一行中的主題相同,請不要將其回顯至屏幕 – BenOfTheNorth 2012-03-31 09:40:15

+0

好的,我會嘗試一下。謝謝Ben。 – James 2012-03-31 09:46:58

1

對於你在做什麼,你想ORDER BY,按給定的字段進行排序。

GROUP BY適用於您嘗試獲取摘要數據的時間,例如在SELECT語句中有SUM()或AVERAGE()或COUNT()時。它告訴SQL如何分解爲這些函數放置哪些項目。

+0

感謝您澄清mjfgates – James 2012-03-31 09:47:29

0

我建議是這樣的:

SELECT DISTINCT subjectgroup, GROUP_CONCAT(firstname SEPARATOR ' ') 
FROM teachers 
WHERE status = 1 
GROUP BY subjectgroup; 

Group concat是你在MySQL

0

需要這將用逗號分隔的老師名字的列表功能:

SELECT 
     GROUP_CONCAT(
      DISTINCT (
       CONCAT_WS(' ', `firstname`, `lastname`) 
      ) SEPARATOR ', ' 
     ) AS `teacher_list`, 
     `subjectgroup` 
    FROM 
     `teachers` 
    WHERE 
     `status` = 'i' 
    GROUP BY 
     `subjectgroup`