Вложенное объединение таблиц PostgreSQL
У меня есть 4 таблицы - A, B, C, D. Я хочу объединить таблицы B с D, и C с D перед тем, как объединить таблицы A, B, C. Как мне это сделать с помощью подзапроса?
CREATE OR REPLACE FUNCTION get_product_info(name)
RETURNS TABLE(id INT, product_name TEXT, price INT, quantity INT,
release_date DATE, supplier_name TEXT,
producer_name TEXT) AS
$$
BEGIN
RETURN QUERY(
SELECT fishing_products.id, fishing_products.name AS product_name,
fishing_products.price, fishing_products.quantity,
fishing_products.release_date, suppliers.name AS supplier_name,
producers.name AS producer_name
FROM fishing_products
JOIN (SELECT *
FROM suppliers
JOIN countries ON suppliers.country_id = countries.id)
ON fishing_products.supplier_id = suppliers.id
JOIN (SELECT *
FROM producers
JOIN countries ON producers.country_id = countries.id)
ON fishing_products.producer_id = producers.id
);
END;
$$
LANGUAGE PLPGSQL;