错误:表名“b”指定了多次

时间:2014-03-05 04:56:32

标签: sql postgresql stored-procedures

我的多重连接存在问题,错误:

> ERROR:  table name "b" specified more than once

我正在尝试从3个表中获取数据:

SELECT b.id bi, b.book_id bb, b.title bt, b.isbn bi, 
b.publisher bp, b.author ba, b.cover bc, b.catalog bca, 
b.stock bs, b.dateadded bd, b.year bye, c.name cn,c.id cid,
m.nik nik, m.name nm, m.department dept,p.borrow_id bid, p.date pdt,
p.datereturn pdr, p.status st

FROM library.borrow p,library.book, library.category
JOIN library.book b ON b.category_id=category.id
JOIN library.book b ON p.book_id=b.id
JOIN library.member m on cast (p.user_id as character varying) = m.nik 

1 个答案:

答案 0 :(得分:0)

显然,您使用相同的表别名两次,这是不允许的

使用不同的别名,或只加入library.book一次,具体取决于您的未知要求。

...
JOIN library.book b1 ON b1.category_id = category.id
JOIN library.book b2 ON b2.id = p.book_id
...

调整查询的其余部分。

此外,在:

之间没有连接条件
library.borrow p, library.book, library.category

删除多余的library.book并为library.category添加加入条件 交叉连接三个表几乎总是错误的,并快速生成巨大的结果集。

最后,别名c无处可寻。你的查询很乱。