外部キーを持つ他のテーブルにリンクされた 1 つのメイン テーブルを持つリレーショナル データベースがあります。すべてのデータを取得するために PHP でレポート ツールを作成しようとしていますが、その一部で問題が発生しています。
これまでの私のクエリは次のとおりです。
SELECT *
FROM student s
LEFT OUTER JOIN ep e ON s.sID = e.sID
LEFT OUTER JOIN ntc n ON s.sID = n.sID
LEFT OUTER JOIN pk p ON s.sID = p.sID
LEFT OUTER JOIN roa r ON s.sID = r.sID
WHERE s.sID = '$id'
ep、ntc、pk は全てスチューデントと 1:1 なので問題ありません。ただし、roa テーブルには、学生ごとに複数のレコード (複数の行にまたがる) が保持されます。
roa テーブルの構造:
+----------+--------------+------+-----+-------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+--------------+------+-----+-------------------+----------------+
| roaID | int(11) | NO | PRI | NULL | auto_increment |
| sID | int(11) | NO | MUL | NULL | |
| roa | varchar(255) | NO | | NULL | |
| roaStaff | varchar(50) | NO | | NULL | |
| visible | tinyint(1) | NO | | 1 | |
+----------+--------------+------+-----+-------------------+----------------+
aselect * from roa where sID = 1
が返す場所:
+-------+-----+---------------+----------+---------+
| roaID | sID | roa | roaStaff | visible |
+-------+-----+---------------+----------+---------+
| 41 | 1 | Description 1 | Staff 1 | 1 |
| 60 | 1 | Description 2 | Staff 2 | 1 |
+-------+-----+---------------+----------+---------+
元のクエリを達成するために私がしているのは、次のような結果です。
<-student, etc data
..-------+-----+-----------------------------------------------+---------+
.. roaID | sID | roa | visible |
..-------+-----+-----------------------------------------------+---------+
.. 41 | 1 | Description 1 Staff 1, Description 2 Staff 2 | 1 |
...
...
roa.roa と roa.roaStaff の両方がすべて 1 つのセルにあるようにします。
使用してみGROUP_CONCAT
ましたが、複数の列をグループ化するのではなく、1 つの列に対してのみ機能させることができました。
どんな助けでも大歓迎です。
よろしく。