我正在尝试为我的书创建一组规范化的表格 通过书名或作者选择排序。 我希望能够拥有' n'每位作者的书籍,以及' n'每本书的作者。
我想解决的问题是如何显示我的书籍和作者
按图块或lastname,firstname,middlename
排序?
我从这样的表开始,有1441个条目。
create table books( bookid serial, title text, firstname text, lastname text);
然后我创建了一个authors表
create table authors( authorid serial, firstname text, lastname text);
并填充它。
然后我创建了一个交叉引用表
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表。
我很确定这三个表是否正确填充。我成功了 在authors表中执行几次插入操作,然后将正确的cross relationshipes插入bookauthor表中。
我现在陷入困境,我无法弄清楚如何展示我的书籍和作者 按标题或作者姓名排序。
我是否走错了路,创造了这种能力,为每位作者创作N个游戏,每本书创作N个作者。
我对外键进行了多次搜索,并且没有任何内容似乎可以解决我的问题。
我在postgresql 9.x环境中。
答案 0 :(得分:0)
加入会有所帮助。
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
订购。