Hi! Could we please enable some services and cookies to improve your experience and our website?
No, thanks.
Okay!
SQLize
Online
/
PHPize Online
/
SQLtest Online
A
A
A
Share
Donate
Blog
Popular
Donate
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.
SQL code:
Upload
Copy
Format
Clear
-- Tables CREATE TABLE company (account_id VARCHAR PRIMARY KEY, company_id INT UNIQUE); CREATE TABLE companyrelations (company_id INT, parent_company_id INT, relation_type VARCHAR); -- Data INSERT INTO company VALUES ('A', 1), ('B', 2), ('C', 3), ('D', 4), ('E', 5), ('X', 6); INSERT INTO companyrelations VALUES (2, 1, 'Delegated'), (3, 2, 'Delegated'), (4, 3, 'Inherited'), (5, 4, 'Inherited'); -- Function CREATE OR REPLACE FUNCTION get_delegation_relation( parent_account_id VARCHAR, child_account_id VARCHAR ) RETURNS TEXT AS $$ DECLARE result TEXT; parent_company_id INT; child_company_id INT; BEGIN SELECT company_id INTO parent_company_id FROM company WHERE account_id = parent_account_id; SELECT company_id INTO child_company_id FROM company WHERE account_id = child_account_id; IF EXISTS ( SELECT 1 FROM companyrelations WHERE company_id = child_company_id AND parent_company_id = parent_company_id AND relation_type = 'Delegated' ) THEN RETURN 'Delegated'; ELSIF EXISTS ( SELECT 1 FROM companyrelations WHERE company_id = parent_company_id AND parent_company_id = child_company_id AND relation_type = 'Delegated' ) THEN RETURN 'ChildDelegated'; END IF; WITH RECURSIVE relation_chain AS ( SELECT company_id, parent_company_id FROM companyrelations WHERE company_id = 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 = parent_company_id ) THEN 'Delegated' ELSE NULL END INTO result; RETURN COALESCE(result, 'No relation found'); END; $$ LANGUAGE plpgsql; -- Test SELECT get_delegation_relation('A', 'E'); -- should return 'Delegated'
SQL
Server:
MySQL 8.0
MySQL 8.0 Sakila (ReadOnly)
MySQL 9.3.0
MariaDB 11.4
MariaDB 11.8
MariaDB 10
MariaDB 10 Sakila (ReadOnly)
SQLite 3
SQLite 3 Preloaded
PostgreSQL 10 Bookings (ReadOnly)
PostgreSQL 13
PostgreSQL 14
PostgreSQL 15
PostgreSQL 16
PostgreSQL 17
MS SQL Server 2017
MS SQL Server 2019
MS SQL Server 2022
MS SQL Server 2022 AdventureWorks (ReadOnly)
Firebird 4.0
Firebird 4.0 (Employee)
Oracle Database 19c (HR)
Oracle Database 21c
Oracle Database 23c Free
SOQOL
Version
ER Diagram
Preserve result
Stuck with a problem?
Got Error?
Ask ChatGPT!
Result:
Copy
Clear