次のテーブルがあります。
ドキュメント
| id | title | authors |
-------------------------------------
| 1 | Arms and the Man | |
| 2 | East of Eden | |
| 3 | If Not Now, When? | |
著者
| id | initial | lastname |
--------------------------------
| 1 | J | Bloggs |
| 2 | J | Doe |
| 3 | P | Punchclock |
| 4 | D | Botts |
著作権
| id | document_id | author_id |
----------------------------------
| 1 | 1 | 1 |
| 2 | 1 | 2 |
| 3 | 1 | 3 |
| 4 | 2 | 3 |
| 5 | 2 | 4 |
| 6 | 3 | 1 |
| 7 | 3 | 3 |
| 8 | 3 | 4 |
そして、私は次のSQL文を持っています:
select d.id, d.title,
group_concat(concat(a.lastname,', ', a.initial, '.')
order by a.lastname, a.initial separator ' ') authors
from documents d
inner join authorships ash on ash.document_id = d.id
inner join authors a on ash.author_id = a.id
group by d.id, d.title
次の結果を返します。
| id | title | authors |
-----------------------------------------------------------------
| 1 | Arms and the Man | Bloggs, J. Doe, J. Punchclock, P. |
| 2 | East of Eden | Punchclock, P. Botts, D. |
| 3 | If Not Now, When? | Bloggs, J. Punchclock, P. Botts, D. |
SQL ステートメントに表示される結果でドキュメント テーブルの author 列を更新する更新ステートメントに select を変換する必要があります。
どうにかして select ステートメントを update ステートメント内に埋め込む必要があると思いますか? これは私が試したものですが、間違っています:
update p set authors = group_concat(concat(a.lastname,', ', a.initial, '.')
order by a.lastname, a.initial separator ' ')
from documents d
inner join authorships ash on ash.document_id = d.id
inner join authors a on ash.author_id = a.id
group by d.id, d.title