Hi! Could we please enable some services and cookies to improve your experience and our website?

SQLize Online / PHPize Online  /  SQLtest Online

A A A
Share      Blog   Popular

SQLize.online is a free online SQL environment for quickly running, experimenting with and sharing code. You can run your SQL code on top of the most popular RDBMS including MySQL, MariaDB, SQLite, PostgreSQL, Oracle and Microsoft SQL Server.

Copy Format Clear
CREATE OR REPLACE FUNCTION get_delegation_relation( parent_account_id VARCHAR, child_account_id VARCHAR ) RETURNS TEXT AS $$ DECLARE result TEXT; v_parent_company_id INT; v_child_company_id INT; BEGIN -- Get company IDs for the accounts SELECT company_id INTO v_parent_company_id FROM company WHERE account_id = parent_account_id; SELECT company_id INTO v_child_company_id FROM company WHERE account_id = child_account_id; -- Check direct Delegated relationship IF EXISTS ( SELECT 1 FROM companyrelations WHERE company_id = v_child_company_id AND parent_company_id = v_parent_company_id AND relation_type = 'Delegated' ) THEN RETURN 'Delegated'; -- Check direct ChildDelegated relationship ELSIF EXISTS ( SELECT 1 FROM companyrelations WHERE company_id = v_parent_company_id AND parent_company_id = v_child_company_id AND relation_type = 'Delegated' ) THEN RETURN 'ChildDelegated'; END IF; -- Recursive Delegated lookup upward from child WITH RECURSIVE relation_chain AS ( SELECT company_id, parent_company_id FROM companyrelations WHERE company_id = v_child_company_id AND relation_type IN ('Delegated', 'Inherited') UNION ALL SELECT cr.company_id, cr.parent_company_id FROM companyrelations cr JOIN relation_chain rc ON cr.company_id = rc.parent_company_id WHERE cr.relation_type IN ('Delegated', 'Inherited') ) SELECT CASE WHEN EXISTS ( SELECT 1 FROM relation_chain WHERE parent_company_id = v_parent_company_id ) THEN 'Delegated' WHEN EXISTS ( SELECT 1 FROM relation_chain WHERE company_id = v_parent_company_id ) THEN 'ChildDelegated' ELSE 'No relation found' END INTO result; RETURN result; END; $$ LANGUAGE plpgsql;

Stuck with a problem? Got Error? Ask ChatGPT!

Copy Clear