如何使用引用相同 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 获取每个 username 的 bookname行(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
我有两个 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 获取每个 username 的 bookname行(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