mysql/cms_page_fullpath.sql
authoredward <edward@roojs.com>
Thu, 13 Apr 2017 06:45:54 +0000 (14:45 +0800)
committeredward <edward@roojs.com>
Thu, 13 Apr 2017 06:45:54 +0000 (14:45 +0800)
mysql/cms_page_fullpath.sql

index f8d03b8..7f4a7d9 100644 (file)
@@ -3,14 +3,41 @@
 DROP FUNCTION IF EXISTS cms_page_fullpath;
 
 DELIMITER $$
-
-CREATE FUNCTION cms_page_fullpath(in_id INT(11))
-        RETURNS VARCHAR(256) DETERMINISTIC
+CREATE FUNCTION proximity_academic(
+    in_id INT(11)
+)  
+RETURNS VARCHAR(254) DETERMINISTIC
     BEGIN
-        DECLARE ret  VARCHAR(256);
-        SET ret  = '';
-        SELECT name INTO ret FROM core_enum
-            WHERE id=in_id LIMIT 1;
-        RETURN ret;
+
+        DECLARE v_ret DECIMAL(5,2);
+        DECLARE v_person_academic_name VARCHAR(256);
+        DECLARE v_criteria_academic_name VARCHAR(256);
+
+        SET v_ret= 0;
+        
+        IF (in_academic_level_id = in_criteria) THEN
+            SET v_ret = 1;
+        ELSE
+            SELECT name INTO v_person_academic_name FROM core_enum WHERE id = in_academic_level_id;
+            SELECT name INTO v_criteria_academic_name FROM core_enum WHERE id = in_criteria;
+
+            SET v_ret = 1 - (v_person_academic_name - v_criteria_academic_name) * 0.2;
+            
+        END IF;
+
+        IF NOT in_is_average THEN
+            RETURN v_ret;
+        END IF;
+
+        IF v_ret > 1 THEN
+            RETURN 1;
+        END IF;
+
+        IF v_ret < 0 THEN
+            RETURN 0;
+        END IF;
+
+        RETURN v_ret;
     END $$
+
 DELIMITER ;
\ No newline at end of file