ドキュメント (雑誌記事) のテーブルを持つ 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 を記述すると、ステートメントがエラーを返します。