1

ドキュメント (雑誌記事) のテーブルを持つ sqlite データベースがあり、各ドキュメントには一意の ID があります。すべての作成者は、対応するドキュメント ID と一意の作成者 ID とともに別のテーブルに一覧表示されます。問題は、記事の著者数が異なることです。著者が 1 人の場合は、その名前だけを取得する必要があります。2 つある場合は、両方の名前を取得する必要があります。2 つ以上ある場合は、最初の著者のみを取得し、「et al.」を追加する必要があります。それに。

次の例では、「作成者 - タイトル」タイプのレコードを作成する必要があります。ドキュメント タイトル 1 には「Name101 et al. - Title1」、Title2 には「Name201 - Title2」、Title3 には「Name301 & Name302 - Title3」を指定する必要があります。

DocsTable
Title   |  DocId
Title1  |  10
Title2  |  20
Title3  |  30

AuthorsTable
Name      | AuthorId  | DocId
Name101   |    101    | 10
Name102   |    102    | 10
Name103   |    103    | 10
Name201   |    201    | 20
Name301   |    301    | 30
Name302   |    302    | 30

確かに、少なくとも 2 つのクエリでそれを行うことができますが、1 つのステートメントでそれを行うにはどうすればよいでしょうか?

もう 1 つの関連する問題は、アクセントを区別しない順序 (たとえば、ú = ü = u) の著者名で結果をソートしたいということです。COLLATE Latin1_General_CI_AI については認識しており、LIKE 句では問題なく動作しますが、ORDER BY 名 COLLATE Latin1_General_CI_AI を記述すると、ステートメントがエラーを返します。

4

1 に答える 1