我有一个 sqlite 数据库,它有一个文档表(期刊文章),其中每个文档都有一个唯一的 ID。所有作者都列在另一个表中,带有相应的文档 ID,以及唯一的作者 ID。问题是文章有不同数量的作者。如果有一位作者,我应该只检索他的名字。如果有两个,我应该检索两个名称。如果有两个以上,我只需要检索第一作者并附加“et al”。给它。
在以下示例中,我需要生成“作者 - 标题”类型的记录。对于文档 Title1,我应该有“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
我当然可以通过至少两个查询来做到这一点,但我怎么能在一个语句中做到这一点呢?
另一个相关的问题是我想按作者姓名以不区分重音的顺序对结果进行排序(例如,ú = ü = u)。我知道 COLLATE Latin1_General_CI_AI,它在 LIKE 子句中工作正常,但是当我写 ORDER BY names COLLATE Latin1_General_CI_AI 时,语句返回错误。