1

これは以前のものから改訂された質問です。スコープが変更されたため、新しい質問を開くことにしました。

これが私が達成したいことです。

書籍の著者の姓を「著者」列にリストします。著者の姓を最初にリストし、次に (コンマの後に) 著者の姓をリストします (存在する場合)。第三著者がいる場合は、第二著者の名前の後に付けます。書籍の著者の順序は、au_ord列に表示されます (1=最初の著者、2=2 番目の著者、3=3 番目の著者)。

MYSQL 出力でこれを達成する方法はありますか?

ここに画像の説明を入力

それらはソーステーブルです。望ましい出力は次のようなものです。

ここに画像の説明を入力

4

2 に答える 2

3

これにより、最初のサンプル出力が得られるはずです。

SELECT title_id, au_ord, au_lname
FROM title_authors
LEFT JOIN authors
ON authors.au_id = title_authors.au_id
WHERE title_id = 'TC7777'
ORDER BY au_ord;

そして、これは2番目を与えるはずです:

SELECT title_id, GROUP_CONCAT(au_lname ORDER BY au_ord SEPARATOR ', ')
FROM title_authors
LEFT JOIN authors
ON authors.au_id = title_authors.au_id
GROUP BY title_id
HAVING title_id = 'TC7777';
于 2012-10-30T08:24:02.983 に答える
2

必要なのはGROUP_CONCAT関数だけです。

SELECT title_id, GROUP_CONCAT(au_lname ORDER BY au_ord)
FROM table
GROUP BY title_id

このGROUP BY句はすべての個々の (個別の) タイトルをグループ化し、そのGROUP_CONCAT上の はそのすべての作成者を連結します。これにより、すべてのタイトルとそれに対応する著者が一覧表示されます。au_lnameテーブルからではなく別のテーブルからのものである場合は、title_id適切な結合を使用する必要があります。あなたの質問のテーブル名がわかりません。

于 2012-10-30T08:36:03.847 に答える