28 lines
566 B
MySQL
28 lines
566 B
MySQL
|
|
||
|
DROP FUNCTION IF EXISTS `vn`.`address_getGeo`;
|
||
|
DELIMITER $$
|
||
|
CREATE DEFINER=`root`@`%` FUNCTION `vn`.`address_getGeo` (vSelf INT)
|
||
|
RETURNS INT
|
||
|
DETERMINISTIC
|
||
|
BEGIN
|
||
|
/**
|
||
|
* Returns the geo for the passed address.
|
||
|
*
|
||
|
* @param vSelf The address id
|
||
|
* @return The geo id
|
||
|
*/
|
||
|
DECLARE vGeoFk INT;
|
||
|
|
||
|
SELECT p.geoFk INTO vGeoFk
|
||
|
FROM address a
|
||
|
JOIN town t ON t.provinceFk = a.provinceFk
|
||
|
JOIN postCode p ON p.townFk = t.id AND p.`code` = a.postalCode
|
||
|
WHERE a.id = vSelf
|
||
|
ORDER BY (a.city SOUNDS LIKE t.`name`) DESC
|
||
|
LIMIT 1;
|
||
|
|
||
|
RETURN vGeoFk;
|
||
|
END$$
|
||
|
DELIMITER ;
|
||
|
|