Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何使用引用同一表的不同列值获取数据_Sql_Postgresql - Fatal编程技术网

Sql 如何使用引用同一表的不同列值获取数据

Sql 如何使用引用同一表的不同列值获取数据,sql,postgresql,Sql,Postgresql,我有两张桌子: create table books ( id int ,bookname text ); 现在,“book_1”、“book_2”、“book_3”包含表“books”的id 我正在尝试使用join创建一个查询,以获得所有三个具有用户名的书名 我可以得到一个书名,但是我如何才能得到所有这三本书的书名呢 SELECT user.name ,books.name FROM user LEFT JOIN books ON bo

我有两张桌子:

create table 
books (
       id int
      ,bookname text
      );

现在,“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 
不需要多行

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的

这可能会对您有所帮助

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

您可以使用子选择来获取单行中每个用户名的书名(如果表book中的id是唯一的


您可能希望或代替,而id不能同时为所有3个值。@Mihai yup thanx。。没有recognise@POHH谢谢你的回答,但我想它会给出不止一行的结果。我想要一行,我更新了问题。你能提供示例数据并创建两个表的脚本吗???@koushikveldana谢谢你的回答,但我认为它会给出不止一行的结果。我想要一行,我更新了问题。
SELECT user.name
      ,books.name 
FROM user LEFT JOIN books ON books.id in (select id from  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