如何使用引用相同 table 的不同列值获取数据

How to get data by using different column values refrencing same table

我有两个 table:

create table 
books (
       id int
      ,bookname text
      );

create table 
users(
      id int
     ,name text
     ,book_1 int
     ,book_2 int
     ,book_3 int
     );

现在,'book_1'、'book_2'、'book_3' 包含 table 'books' 的 ID。

我正在尝试使用 join 创建单个查询以获取所有三本书名和用户名。

我可以得到一个书名,但是我如何得到所有三个书名?

SELECT user.name
      ,books.name 
FROM user LEFT JOIN books ON books.id=user.book_1; 

(这是给我一本书的详细信息)

使用 PostgreSQL。

我想要一行中的结果。喜欢

username, book_1_name, book_2_name, book_3_name 

不想要多行。

SELECT user.name
      ,books.name
FROM user LEFT JOIN books ON books.id=user.book_1
          OR books.id=user.book_2 
          OR books.id=user.book_3; 

加入所有 id's

这可能对您有所帮助

SELECT user.name
      ,books.name 
FROM user LEFT JOIN books ON books.id in (select id from  books)

您可以使用 sub-selects 获取每个 usernamebookname行(if id in table books 是唯一的

select name username
      ,(select bookname from books where id=book_1) book1_name
      ,(select bookname from books where id=book_2) book2_name
      ,(select bookname from books where id=book_3) book3_name
from users

> SQLFIDDLE DEMO