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
订购。
我正在尝试为我的书创建一组规范化的 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
订购。