Feat(SQL): Locations redesigned for parent location id stored on location table and links table removed.

This commit is contained in:
2025-07-15 15:21:04 +01:00
parent a3fd8b12fe
commit e0805ec2ed
10 changed files with 13 additions and 124 deletions

View File

@@ -10,6 +10,7 @@ WHERE
CREATE TABLE IF NOT EXISTS parts.DOG_Location ( CREATE TABLE IF NOT EXISTS parts.DOG_Location (
id_location INT NOT NULL AUTO_INCREMENT PRIMARY KEY id_location INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, id_locaiton_parent INT
, code VARCHAR(100) NOT NULL , code VARCHAR(100) NOT NULL
, name VARCHAR(250) NOT NULL , name VARCHAR(250) NOT NULL
, active BIT NOT NULL DEFAULT 1 , active BIT NOT NULL DEFAULT 1

View File

@@ -11,6 +11,7 @@ WHERE
CREATE TABLE IF NOT EXISTS parts.DOG_Location_Temp ( CREATE TABLE IF NOT EXISTS parts.DOG_Location_Temp (
id_temp INT NOT NULL PRIMARY KEY AUTO_INCREMENT id_temp INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_location INT , id_location INT
, id_location_parent INT
, code VARCHAR(100) , code VARCHAR(100)
, name VARCHAR(250) , name VARCHAR(250)
, active BIT , active BIT

View File

@@ -30,6 +30,10 @@ BEGIN
, value_new , value_new
, id_change_set , id_change_set
) )
-- Changed id_location_parent
SELECT NEW.id_location, 'id_location_parent', CONVERT(OLD.id_location_parent, CHAR), CONVERT(NEW.id_location_parent, CHAR), NEW.id_change_set
WHERE NOT (OLD.id_location_parent <=> NEW.code)
UNION
-- Changed code -- Changed code
SELECT NEW.id_location, 'code', OLD.code, NEW.code, NEW.id_change_set SELECT NEW.id_location, 'code', OLD.code, NEW.code, NEW.id_change_set
WHERE NOT (OLD.code <=> NEW.code) WHERE NOT (OLD.code <=> NEW.code)

View File

@@ -128,7 +128,7 @@ BEGIN
DROP TEMPORARY TABLE IF EXISTS tmp_Split_Name_Calc_Location; DROP TEMPORARY TABLE IF EXISTS tmp_Split_Name_Calc_Location;
DROP TEMPORARY TABLE IF EXISTS tmp_Split_Id_Calc_Location; DROP TEMPORARY TABLE IF EXISTS tmp_Split_Id_Calc_Location;
DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error_Calc_Location; DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error_Calc_Location;
DROP TEMPORARY TABLE IF EXISTS tmp_Location_Link_Calc_Location; -- DROP TEMPORARY TABLE IF EXISTS tmp_Location_Link_Calc_Location;
DROP TEMPORARY TABLE IF EXISTS tmp_Location_Calc_Location; DROP TEMPORARY TABLE IF EXISTS tmp_Location_Calc_Location;
CREATE TEMPORARY TABLE tmp_Location_Calc_Location ( CREATE TEMPORARY TABLE tmp_Location_Calc_Location (
@@ -138,6 +138,7 @@ BEGIN
, csv_id_locations_parent TEXT , csv_id_locations_parent TEXT
); );
/*
CREATE TEMPORARY TABLE tmp_Location_Link_Calc_Location ( CREATE TEMPORARY TABLE tmp_Location_Link_Calc_Location (
id_link INT NOT NULL id_link INT NOT NULL
, id_location_parent INT , id_location_parent INT
@@ -145,7 +146,8 @@ BEGIN
, does_meet_id_filters BIT , does_meet_id_filters BIT
, does_meet_non_id_filters BIT , does_meet_non_id_filters BIT
); );
*/
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error_Calc_Location ( CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error_Calc_Location (
id_error INT NOT NULL PRIMARY KEY AUTO_INCREMENT id_error INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_type INT NULL , id_type INT NULL
@@ -428,6 +430,7 @@ BEGIN
END IF; END IF;
-- Calculated fields -- Calculated fields
/*
-- Parent Location Ids -- Parent Location Ids
WITH Location_Parent AS ( WITH Location_Parent AS (
SELECT SELECT
@@ -450,33 +453,9 @@ BEGIN
SELECT 'After generate calculated fields Locations'; SELECT 'After generate calculated fields Locations';
SELECT * FROM tmp_Location_Calc_Location; SELECT * FROM tmp_Location_Calc_Location;
END IF; END IF;
*/
-- Location Links
INSERT INTO tmp_Location_Link_Calc_Location (
id_link
, id_location_parent
, id_location_child
, does_meet_id_filters
, does_meet_non_id_filters
)
SELECT
LOCATION_LINK.id_link
, LOCATION_LINK.id_location_parent
, LOCATION_LINK.id_location_child
, NULL AS does_meet_id_filters
, NULL AS does_meet_non_id_filters
FROM parts.DOG_Location_Link LOCATION_LINK
INNER JOIN tmp_Location_Calc_Location t_LOCATIONS
ON LOCATION_LINK.id_location_parent = t_LOCATIONS.id_location
OR LOCATION_LINK.id_location_child = t_LOCATIONS.id_location
WHERE
a_get_inactive_location = 1
OR LOCATION_LINK.active = 1
;
-- Permissions -- Permissions
IF a_debug = 1 THEN IF a_debug = 1 THEN
SELECT SELECT
@@ -600,31 +579,6 @@ BEGIN
INNER JOIN tmp_Location_Calc_Location t_LOCATIONS ON LOCATIONS.id_location = t_LOCATIONS.id_location INNER JOIN tmp_Location_Calc_Location t_LOCATIONS ON LOCATIONS.id_location = t_LOCATIONS.id_location
ORDER BY LOCATIONS.name ORDER BY LOCATIONS.name
; ;
INSERT INTO parts.DOG_Location_Link_Temp (
guid
, id_link
, id_location_parent
, id_location_child
, active
, does_meet_id_filters
, does_meet_non_id_filters
)
SELECT
a_guid
, t_LOCATION_LINK.id_link
, LOCATION_LINK.id_location_parent
, LOCATION_LINK.id_location_child
, LOCATION_LINK.active
, NULL AS does_meet_id_filters
, NULL AS does_meet_non_id_filters
FROM parts.DOG_Location_Link LOCATION_LINK
INNER JOIN tmp_Location_Link_Calc_Location t_LOCATION_LINK ON LOCATION_LINK.id_link = t_LOCATION_LINK.id_link
INNER JOIN parts.DOG_Location LOCATIONS ON LOCATION_LINK.id_location_child = LOCATIONS.id_location
ORDER BY LOCATIONS.name
;
COMMIT; COMMIT;
-- Errors -- Errors
@@ -651,7 +605,7 @@ BEGIN
DROP TEMPORARY TABLE IF EXISTS tmp_Split_Name_Calc_Location; DROP TEMPORARY TABLE IF EXISTS tmp_Split_Name_Calc_Location;
DROP TEMPORARY TABLE IF EXISTS tmp_Split_Id_Calc_Location; DROP TEMPORARY TABLE IF EXISTS tmp_Split_Id_Calc_Location;
DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error_Calc_Location; DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error_Calc_Location;
DROP TEMPORARY TABLE IF EXISTS tmp_Location_Link_Calc_Location; -- DROP TEMPORARY TABLE IF EXISTS tmp_Location_Link_Calc_Location;
DROP TEMPORARY TABLE IF EXISTS tmp_Location_Calc_Location; DROP TEMPORARY TABLE IF EXISTS tmp_Location_Calc_Location;
IF a_debug = 1 THEN IF a_debug = 1 THEN
@@ -696,9 +650,6 @@ CALL parts.p_dog_calc_location (
SELECT * SELECT *
FROM parts.DOG_Location_Temp FROM parts.DOG_Location_Temp
; ;
SELECT *
FROM parts.DOG_Location_Link_Temp
;
/* /*
SELECT * SELECT *
FROM parts.DOG_Location_Temp C FROM parts.DOG_Location_Temp C
@@ -716,8 +667,5 @@ CALL parts.p_dog_clear_calc_location (
DELETE DELETE
FROM parts.DOG_Location_Temp FROM parts.DOG_Location_Temp
; ;
DELETE
FROM parts.DOG_Location_Link_Temp
;
*/ */

View File

@@ -22,11 +22,6 @@ BEGIN
WHERE LOCATIONS_T.GUID = a_guid WHERE LOCATIONS_T.GUID = a_guid
; ;
DELETE LOCATION_LINK_T
FROM parts.DOG_Location_Link_Temp LOCATION_LINK_T
WHERE LOCATION_LINK_T.GUID = a_guid
;
COMMIT; COMMIT;
IF a_debug = 1 THEN IF a_debug = 1 THEN

View File

@@ -15,7 +15,6 @@ CREATE PROCEDURE parts.p_dog_get_many_location (
, IN a_require_all_non_id_search_filters_met BIT , IN a_require_all_non_id_search_filters_met BIT
, IN a_require_any_non_id_search_filters_met BIT , IN a_require_any_non_id_search_filters_met BIT
, IN a_output_LOCATIONS BIT , IN a_output_LOCATIONS BIT
, IN a_output_LOCATION_links BIT
, IN a_debug BIT , IN a_debug BIT
) )
BEGIN BEGIN
@@ -100,7 +99,6 @@ BEGIN
SET a_require_any_non_id_search_filters_met := IFNULL(a_require_any_non_id_search_filters_met, 1); SET a_require_any_non_id_search_filters_met := IFNULL(a_require_any_non_id_search_filters_met, 1);
*/ */
SET a_output_LOCATIONS := IFNULL(a_output_LOCATIONS, 0); SET a_output_LOCATIONS := IFNULL(a_output_LOCATIONS, 0);
SET a_output_LOCATION_links := IFNULL(a_output_LOCATION_links, 0);
SET a_debug := IFNULL(a_debug, 0); SET a_debug := IFNULL(a_debug, 0);
IF a_debug = 1 THEN IF a_debug = 1 THEN
@@ -115,7 +113,6 @@ BEGIN
, a_require_all_non_id_search_filters_met , a_require_all_non_id_search_filters_met
, a_require_any_non_id_search_filters_met , a_require_any_non_id_search_filters_met
, a_output_LOCATIONS , a_output_LOCATIONS
, a_output_LOCATION_links
, a_debug , a_debug
; ;
@@ -129,7 +126,6 @@ BEGIN
END IF; END IF;
DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error; DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error;
DROP TEMPORARY TABLE IF EXISTS tmp_Location_Link;
DROP TEMPORARY TABLE IF EXISTS tmp_Location; DROP TEMPORARY TABLE IF EXISTS tmp_Location;
CREATE TEMPORARY TABLE tmp_Location ( CREATE TEMPORARY TABLE tmp_Location (
@@ -142,16 +138,6 @@ BEGIN
, does_meet_non_id_filters BIT , does_meet_non_id_filters BIT
); );
CREATE TEMPORARY TABLE tmp_Location_Link (
id_link INT NOT NULL
, id_location_parent INT
, id_location_child INT
, active BIT
, does_meet_id_filters BIT
, does_meet_non_id_filters BIT
);
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error ( CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error (
id_error INT NOT NULL PRIMARY KEY AUTO_INCREMENT id_error INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_type INT NULL , id_type INT NULL
@@ -274,8 +260,6 @@ BEGIN
IF a_debug = 1 THEN IF a_debug = 1 THEN
SELECT COUNT(*) FROM parts.DOG_Location_Temp; SELECT COUNT(*) FROM parts.DOG_Location_Temp;
SELECT * FROM parts.DOG_Location_Temp; SELECT * FROM parts.DOG_Location_Temp;
SELECT COUNT(*) FROM parts.DOG_Location_Link_Temp;
SELECT * FROM parts.DOG_Location_Link_Temp;
END IF; END IF;
INSERT INTO tmp_Location ( INSERT INTO tmp_Location (
@@ -299,32 +283,9 @@ BEGIN
WHERE LOCATION_T.GUID = v_guid WHERE LOCATION_T.GUID = v_guid
; ;
INSERT INTO tmp_Location_Link (
id_link
, id_location_parent
, id_location_child
, active
, does_meet_id_filters
, does_meet_non_id_filters
)
SELECT
LOCATION_LINK_T.id_link
, LOCATION_LINK_T.id_location_parent
, LOCATION_LINK_T.id_location_child
, LOCATION_LINK_T.active
, NULL AS does_meet_id_filters
, NULL AS does_meet_non_id_filters
FROM parts.DOG_Location_Link_Temp LOCATION_LINK_T
WHERE LOCATION_LINK_T.GUID = v_guid
;
IF a_debug = 1 THEN IF a_debug = 1 THEN
SELECT COUNT(*) FROM tmp_Location; SELECT COUNT(*) FROM tmp_Location;
SELECT * FROM tmp_Location; SELECT * FROM tmp_Location;
SELECT COUNT(*) FROM tmp_Location_Link;
SELECT * FROM tmp_Location_Link;
END IF; END IF;
END IF; END IF;
@@ -332,10 +293,8 @@ BEGIN
IF EXISTS(SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN IF EXISTS(SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
IF a_debug = 1 THEN IF a_debug = 1 THEN
SELECT * FROM tmp_Location; SELECT * FROM tmp_Location;
SELECT * FROM tmp_Location_Link;
END IF; END IF;
DELETE FROM tmp_Location_Link;
DELETE FROM tmp_Location; DELETE FROM tmp_Location;
END IF; END IF;
@@ -356,22 +315,6 @@ BEGIN
; ;
END IF; END IF;
-- Location Links
IF a_output_LOCATION_links = 1 THEN
SELECT
t_LOCATION_LINK.id_link
, t_LOCATION_LINK.id_location_parent
, t_LOCATION_LINK.id_location_child
, t_LOCATION_LINK.active
, t_LOCATION_LINK.does_meet_id_filters
, t_LOCATION_LINK.does_meet_non_id_filters
FROM tmp_Location_Link t_LOCATION_LINK
INNER JOIN tmp_Location t_LOCATIONS ON t_LOCATION_LINK.id_location_child = t_LOCATIONS.id_location
ORDER BY t_LOCATIONS.name
;
END IF;
-- Errors -- Errors
SELECT SELECT
t_ERROR.id_error t_ERROR.id_error
@@ -397,7 +340,6 @@ BEGIN
); );
DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error; DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error;
DROP TEMPORARY TABLE IF EXISTS tmp_Location_Link;
DROP TEMPORARY TABLE IF EXISTS tmp_Location; DROP TEMPORARY TABLE IF EXISTS tmp_Location;
IF a_debug = 1 THEN IF a_debug = 1 THEN
@@ -420,7 +362,6 @@ CALL parts.p_dog_get_many_location (
, 0 -- a_require_all_non_id_search_filters_met , 0 -- a_require_all_non_id_search_filters_met
, 1 -- a_require_any_non_id_search_filters_met , 1 -- a_require_any_non_id_search_filters_met
, 1 -- a_output_LOCATIONS , 1 -- a_output_LOCATIONS
, 1 -- a_output_LOCATION_links
, 1 -- a_debug , 1 -- a_debug
); );
@@ -436,7 +377,6 @@ CALL demo.p_dog_get_many_location (
, 0 -- a_require_all_non_id_search_filters_met , 0 -- a_require_all_non_id_search_filters_met
, 1 -- a_require_any_non_id_search_filters_met , 1 -- a_require_any_non_id_search_filters_met
, 1 -- a_output_LOCATIONS , 1 -- a_output_LOCATIONS
, 1 -- a_output_LOCATION_links
, 1 -- a_debug , 1 -- a_debug
); );