By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
Help with an interesting Postgres question: Why isn't an Index Only Scan used on a partition accessed via the parent table?.
SELECT C.id, C.name FROM
products P JOIN union_products U
ON P.union_product_id=U.id
JOIN companies C
ON P.company_id=C.id
WHERE P.union_product_id IN (1, 2)
GROUP BY C.id, C.name
HAVING COUNT(DISTINCT P.union_product_id) = 2 AND
SUM(P.price_for_one_product) < 100
ORDER BY C.id
id | name |
---|---|
1 | company 1 |
2 | company 2 |
SELECT 2
select * from union_products
id | name | count_seller |
---|---|---|
1 | union product 1 | 2 |
2 | union product 2 | 2 |
SELECT 2
select * from products
id | name | price_for_one_product | company_id | union_product_id |
---|---|---|---|---|
1 | product 1 | 1 | 1 | 1 |
2 | product 2 | 1 | 1 | 2 |
3 | product 3 | 1 | 2 | 1 |
4 | product 3 | 1 | 2 | 2 |
5 | product 3 | 1 | 3 | 2 |
SELECT 5
select * from companies
id | name |
---|---|
1 | company 1 |
2 | company 2 |
3 | company 3 |
SELECT 3