1
我的測試表:有條件加入一個表
create table products (
product varchar(50) primary key,
show_reviews boolean
);
create table reviews (
review_id integer primary key,
product varchar(50) references products (product),
review varchar(200)
);
insert into products (product, show_reviews) values
('blender', true),
('toaster', false),
('microwave', true);
insert into reviews (review_id, product, review) values
(1, 'blender', 'Excellent'),
(2, 'toaster', 'Terrible'),
(3, 'toaster', 'Would not buy again'),
(4, 'microwave', 'Wonderful'),
(5, 'microwave', 'Splendid');
我在尋找產生一個結果集,這樣的查詢:
product | show_reviews | review_id | review
-------------+----------------+-------------+----------
blender | true | 1 | Excellent
toaster | false | null | null
microwave | true | 4 | Wonderful
microwave | true | 5 | Splendid
從本質上講,我想有條件地加盟reviews
表取決於show_reviews
的值。這是我想出的:
select products.*, rev.*
from products
left join (
select reviews.*
from reviews
join products as p on p.product = reviews.product
where p.show_reviews = true
) as rev on rev.product = products.product;
有什麼其他方法可以做到這一點?
優秀。我想我還是不瞭解聯結以及我以爲我做的。 – Snowball