使用外部参考

时间:2015-09-04 19:41:07

标签: postgresql select foreign-keys normalization

我正在尝试为我的书创建一组规范化的表格 通过书名或作者选择排序。 我希望能够拥有' 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环境中。

1 个答案:

答案 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订购。