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 code      Blog   Popular   FAQ

Online Sandbox for SQL and PHP: Write, Run, Test, and Share SQL Queries and PHP Code

Copy Format Clear
CREATE TABLE IF NOT EXISTS Departments ( department_id INT AUTO_INCREMENT PRIMARY KEY, department_name VARCHAR(255) NOT NULL UNIQUE ) ENGINE = InnoDB; CREATE TABLE IF NOT EXISTS Positions ( position_id INT AUTO_INCREMENT PRIMARY KEY, position_name VARCHAR(255) NOT NULL UNIQUE ) ENGINE = InnoDB; CREATE TABLE IF NOT EXISTS Executors ( executor_id INT AUTO_INCREMENT PRIMARY KEY, executor_name VARCHAR(255) NOT NULL, executor_contact VARCHAR(255), department_id INT, position_id INT, executor_notes TEXT, FOREIGN KEY (department_id) REFERENCES Departments(department_id), FOREIGN KEY (position_id) REFERENCES Positions(position_id) ) ENGINE = InnoDB; CREATE TABLE IF NOT EXISTS Issuers ( issuer_id INT AUTO_INCREMENT PRIMARY KEY, issuer_name VARCHAR(255) NOT NULL, issuer_contact VARCHAR(255), department_id INT, position_id INT, issuer_notes TEXT, FOREIGN KEY (department_id) REFERENCES Departments(department_id), FOREIGN KEY (position_id) REFERENCES Positions(position_id) ) ENGINE = InnoDB; CREATE TABLE IF NOT EXISTS Orders ( order_id INT AUTO_INCREMENT PRIMARY KEY, order_name VARCHAR(255) NOT NULL, order_content TEXT, order_date_issued DATE NOT NULL, order_deadline DATE NOT NULL, order_date_completed DATE DEFAULT NULL, executor_id INT NOT NULL, issuer_id INT NOT NULL, order_status ENUM('active', 'completed', 'overdue', 'cancelled', 'failed') DEFAULT 'active', order_priority ENUM('high', 'medium', 'low') DEFAULT 'medium', order_creation_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (executor_id) REFERENCES Executors (executor_id), FOREIGN KEY (issuer_id) REFERENCES Issuers (issuer_id) ) ENGINE = InnoDB; CREATE INDEX idx_orders_executor_id ON Orders (executor_id); CREATE INDEX idx_orders_issuer_id ON Orders (issuer_id); CREATE INDEX idx_orders_date_issued ON Orders (order_date_issued); CREATE INDEX idx_orders_deadline ON Orders (order_deadline); DROP TRIGGER IF EXISTS trg_auto_update_status; DELIMITER $$ CREATE TRIGGER trg_auto_update_status BEFORE UPDATE ON Orders FOR EACH ROW BEGIN IF NEW.order_date_completed IS NULL AND NEW.order_status NOT IN ('cancelled', 'failed') AND NEW.order_deadline < CURDATE() THEN SET NEW.order_status = 'overdue'; ELSEIF NEW.order_date_completed IS NOT NULL AND NEW.order_status != 'completed' AND NEW.order_status != 'failed' AND NEW.order_status != 'cancelled' THEN SET NEW.order_status = 'completed'; END IF; END$$ DELIMITER ; DELIMITER $$ CREATE PROCEDURE GetOrdersByDate(IN target_date DATE) BEGIN SELECT * FROM Orders WHERE order_date_issued = target_date; END$$ DELIMITER ; DELIMITER $$ CREATE PROCEDURE PrintDailyOrders() BEGIN SELECT * FROM Orders WHERE order_deadline = CURDATE(); END$$ DELIMITER ; DELIMITER $$ CREATE PROCEDURE GetOrdersByPeriod(IN start_date DATE, IN end_date DATE) BEGIN SELECT * FROM Orders WHERE order_date_issued BETWEEN start_date AND end_date; END$$ DELIMITER ; DELIMITER $$ CREATE PROCEDURE GetOverdueOrders() BEGIN SELECT o.*, e.executor_name, i.issuer_name FROM Orders o JOIN Executors e ON o.executor_id = e.executor_id JOIN Issuers i ON o.issuer_id = i.issuer_id WHERE o.order_deadline < CURDATE() AND o.order_date_completed IS NULL AND o.order_status NOT IN ('cancelled', 'failed'); END$$ DELIMITER ; DELIMITER $$ CREATE PROCEDURE GetOrdersByExecutor(IN exec_id INT) BEGIN SELECT o.*, i.issuer_name FROM Orders o JOIN Issuers i ON o.issuer_id = i.issuer_id WHERE o.executor_id = exec_id; END$$ DELIMITER ; CREATE INDEX idx_orders_status ON Orders (order_status); CREATE INDEX idx_orders_date_completed ON Orders (order_date_completed); CREATE INDEX idx_orders_priority ON Orders (order_priority); CREATE INDEX idx_executors_department ON Executors (department_id); CREATE INDEX idx_executors_position ON Executors (position_id); CREATE INDEX idx_issuers_department ON Issuers (department_id); CREATE INDEX idx_issuers_position ON Issuers (position_id); CREATE INDEX idx_departments_name ON Departments (department_name); CREATE INDEX idx_positions_name ON Positions (position_name); CREATE INDEX idx_executors_name ON Executors (executor_name); CREATE INDEX idx_issuers_name ON Issuers (issuer_name); USE `ControlEO`; INSERT INTO Departments (department_name) VALUES ('IT Department'), ('Human Resources'), ('Marketing'), ('Finance'), ('Operations'), ('Customer Support'), ('Research & Development'), ('Sales'), ('Legal'), ('Quality Assurance'), ('Product Management'), ('Administration'); INSERT INTO Positions (position_name) VALUES ('Manager'), ('Specialist'), ('Director'), ('Coordinator'), ('Supervisor'), ('Assistant'), ('Analyst'), ('Team Lead'), ('Executive'), ('Junior Specialist'), ('Senior Specialist'), ('Consultant'); INSERT INTO Executors ( executor_name, executor_contact, department_id, position_id ) VALUES ('John Doe', 'john.doe@company.com', 1, 1), ('Jane Smith', 'jane.smith@company.com', 2, 2), ( 'Michael Brown', 'michael.brown@company.com', 3, 3 ), ('Emma Wilson', 'emma.wilson@company.com', 4, 4), ('David Lee', 'david.lee@company.com', 5, 5), ('Sarah Chen', 'sarah.chen@company.com', 6, 6), ( 'Thomas Wright', 'thomas.wright@company.com', 7, 7 ), ('Lisa Garcia', 'lisa.garcia@company.com', 8, 8), ( 'Kevin Robinson', 'kevin.robinson@company.com', 9, 9 ), ( 'Amanda Taylor', 'amanda.taylor@company.com', 10, 10 ), ( 'Richard Martin', 'richard.martin@company.com', 11, 11 ), ( 'Jessica White', 'jessica.white@company.com', 12, 12 ); INSERT INTO Issuers ( issuer_name, issuer_contact, department_id, position_id ) VALUES ( 'Robert Johnson', 'robert.johnson@company.com', 1, 1 ), ('Emily Davis', 'emily.davis@company.com', 2, 2), ('Daniel Clark', 'daniel.clark@company.com', 3, 3), ( 'Olivia Rodriguez', 'olivia.rodriguez@company.com', 4, 4 ), ('James Wilson', 'james.wilson@company.com', 5, 5), ( 'Sophia Martinez', 'sophia.martinez@company.com', 6, 6 ), ( 'William Anderson', 'william.anderson@company.com', 7, 7 ), ('Ava Thompson', 'ava.thompson@company.com', 8, 8), ( 'Alexander Harris', 'alexander.harris@company.com', 9, 9 ), ('Mia Lewis', 'mia.lewis@company.com', 10, 10), ( 'Benjamin Young', 'benjamin.young@company.com', 11, 11 ), ( 'Charlotte Hall', 'charlotte.hall@company.com', 12, 12 ); INSERT INTO Orders ( order_name, order_content, order_date_issued, order_deadline, order_date_completed, executor_id, issuer_id, order_status, order_priority ) VALUES ( 'System Maintenance', 'Perform regular system maintenance', '2025-03-15', '2025-03-20', '2025-03-19', 1, 1, 'completed', 'high' ), ( 'HR Policy Update', 'Update company HR policies', '2025-03-20', '2025-04-10', NULL, 2, 2, 'active', 'medium' ), ( 'Marketing Campaign', 'Develop new marketing campaign for product launch', '2025-03-25', '2025-04-15', NULL, 3, 3, 'active', 'high' ), ( 'Financial Report Q1', 'Prepare financial report for first quarter', '2025-03-10', '2025-04-05', '2025-04-02', 4, 4, 'completed', 'high' ), ( 'Process Optimization', 'Review and optimize operational processes', '2025-03-18', '2025-05-01', NULL, 5, 5, 'active', 'medium' ), ( 'Customer Support Training', 'Conduct training for customer support team', '2025-03-22', '2025-04-05', '2025-04-04', 6, 6, 'completed', 'low' ), ( 'Research Project', 'Research new technologies for product development', '2025-03-28', '2025-05-10', NULL, 7, 7, 'active', 'high' ), ( 'Sales Strategy', 'Develop new sales strategy for international markets', '2025-03-15', '2025-04-20', NULL, 8, 8, 'active', 'medium' ), ( 'Contract Review', 'Review and update vendor contracts', '2025-03-12', '2025-03-30', '2025-03-28', 9, 9, 'completed', 'low' ), ( 'Quality Testing', 'Perform quality testing on new product features', '2025-03-25', '2025-04-15', NULL, 10, 10, 'active', 'high' ), ( 'Product Roadmap', 'Update product roadmap for next quarter', '2025-03-20', '2025-04-10', NULL, 11, 11, 'active', 'medium' ), ( 'Office Supplies Order', 'Place order for office supplies', '2025-03-15', '2025-03-25', '2025-03-23', 12, 12, 'completed', 'low' ); DROP VIEW IF EXISTS OrdersDetailView; CREATE VIEW OrdersDetailView AS SELECT O.order_id, O.order_name, O.order_content, O.order_date_issued, O.order_deadline, O.order_date_completed, E.executor_name, I.issuer_name, D.department_name AS executor_department, O.order_status, O.order_priority FROM Orders O JOIN Executors E ON O.executor_id = E.executor_id JOIN Issuers I ON O.issuer_id = I.issuer_id JOIN Departments D ON E.department_id = D.department_id; DROP VIEW IF EXISTS ActiveOrdersView; CREATE VIEW ActiveOrdersView AS SELECT O.order_id, O.order_name, O.order_deadline, E.executor_name, I.issuer_name, O.order_priority FROM Orders O JOIN Executors E ON O.executor_id = E.executor_id JOIN Issuers I ON O.issuer_id = I.issuer_id WHERE O.order_status = 'active'; DROP VIEW IF EXISTS DepartmentStatsView; CREATE VIEW DepartmentStatsView AS SELECT D.department_name, COUNT(DISTINCT E.executor_id) AS executor_count, COUNT(DISTINCT I.issuer_id) AS issuer_count, COUNT(O.order_id) AS order_count FROM Departments D LEFT JOIN Executors E ON D.department_id = E.department_id LEFT JOIN Issuers I ON D.department_id = I.department_id LEFT JOIN Orders O ON E.executor_id = O.executor_id OR I.issuer_id = O.issuer_id GROUP BY D.department_name;

Stuck with a problem? Got Error? Ask ChatGPT!