select 来自使用外部引用的规范化表

select from normalized tables using external references

我正在尝试为我的书创建一组规范化的 table,然后 select 他们按书名或作者排序。 我希望每个作者可以有 'n' 本书,每本书有 'n' 个作者。

我要解决的问题是如何显示我的书和作者 按图块或 lastname,firstname,middlename?

排序

我从这样的 table 开始,大约有 1441 个条目。

create table books(
bookid serial,
title text,
firstname text,
lastname text);

然后我创建了一个作者table

create table authors(
authorid serial,
firstname text,
lastname text);

并填充它。

然后我创建了一个交叉引用table

create table bookAuthor
(    
     bookId INTEGER NOT NULL REFERENCES books(bookId),
     authorId INTEGER NOT NULL REFERENCES authors(authorId)
);

create unique index bookAuthor_unique_index on bookAuthor(bookId, authorId);

然后我用 1441 个条目填充了 bookauthor table。

我很确定这三个 table 已正确填充。我设法 对作者 table 进行多次插入,然后将正确的交叉关系插入书作者 table.

我现在卡住了,我不知道如何显示我的书和作者 按标题或作者姓名排序。

我是否走错了路来创造这种能力,即每位作者创作 N 个标题,每本书创作 N 位作者。

我多次搜索外键,多次 table 似乎没有解决我的问题。

我在 postgresql 9.x 环境中。

加入会很有帮助。

select * from bookAuthor
inner join books on bookAuthor.bookId = books.bookid
inner join authors on bookAuthor.authorId = authors.authorid
order by books.title;

或者您可以改为 authors.lastname, authors.firstname 订购。