2

他のいくつかの質問をチェックしましたが、特定の質問に答えるものが見つからないようです。

次の表は、このクエリの結果です。

SELECT teacher.teacherID, unitName FROM teacher INNER JOIN unit ON teacher.teacherID=unit.teacherID ORDER BY teacherID ASC

テーブル

実際に結果を表示する必要があるのは次のとおりです。

表 2

これを実現できるように現在のクエリを変更する方法はありますか? これが MySQL で可能かどうかはまったくわかりませんでしたが、過去に学んだように、クエリの力を決して過小評価してはなりません。(これは、配列を操作しようとして厄介なネストされたループを使用して時間を費やした後に発見されましたが、代わりにクエリですべてを行うことができました)

編集: SQL フィドル

ありがとう、そして私は助けていただければ幸いです!

4

2 に答える 2

4

はい、 GROUP BYと GROUP_CONCATを使用する必要があります。

SELECT teacher.teacherID, GROUP_CONCAT(unitName)
FROM teacher
INNER JOIN unit ON teacher.teacherID=unit.teacherID
GROUP BY teacher.teacherID
ORDER BY teacherID ASC

このクエリは、SQL Fiddle で直接機能します。

于 2013-04-19T19:33:58.767 に答える
2

alexn の回答を微調整して、カンマの後のスペースで書式設定を一致させます。

SELECT teacher.teacherID, GROUP_CONCAT(unitName SEPARATOR ', ')
FROM teacher
INNER JOIN unit ON teacher.teacherID=unit.teacherID
GROUP BY teacher.teacherID
ORDER BY teacherID ASC
于 2013-04-19T19:55:20.150 に答える