繁体   English   中英

如何通过引用同一张表的不同列值获取数据

[英]How to get data by using different column values refrencing same 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”包含表“ 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 

不需要多行。

您可以使用子查询得到BOOKNAME每个用户名的单行( 如果ID在桌是唯一的

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演示

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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM