私はこれを学生の名前をあまり繰り返さないようにしようとしています。私はSQLクエリにはかなり新しいです。各学生のために1行にすべてのリストを表示することで、これを行うより良い方法があるかどうかは不思議です。各名前のすべての値を列挙してSQLグループを作成
SELECT s.name students, c.name classes
FROM students s INNER JOIN enrollments e ON s.id=e.student_id
INNER JOIN classes c ON e.class_id=c.id
GROUP BY s.name, c.name;
は私にクリーンな方法があるかどう興味があるだけ
students | classes
-----------+----------------
Paige | Calculus
Pajak | Calculus
Pajak | Yoga
Pamela | Calculus
Pamela | Cooking Pasta
Pamela | Football
Pamela | Singing
Pamela | Yoga
Parker | English
Parker | Fruit
Parker | Social Studies
を与えます。
結果は、一般的には、集計関数(SUM、AVG、COUNTなど)なしでGROUP BYを使用することはありません。あなたがPIVOT機能を取得しようとしているような音ですか?あなたが「各学生のために1つの列に記載されている」ことによって他に何を意味するかわからない。各生徒に複数のクラス値があります。したがって、1人の学生につき複数の行。 –
私はそれが私の質問に答えると思います。あなたが言っていることから、正しく理解すれば、各生徒は複数のクラスを持っているので、生徒ごとに複数の行があることになります。私は各学生のためにすべてのクラスを1つの行に入れようとしていましたが、それはあまりにも単純です。ありがとう:D。 –
これは、多くの関数を使用していますが、基本SELECTだけではありません。私はPosgreSQLを使用すると[STRING_AGG](https://www.postgresql.org/docs/9.0/static/functions-aggregate.html) –