热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Mysql使用自定义方法,以及cakephp分页使用join查询的方法

Mysql使用自定义方法,以及cakephp分页使用join查询的方法

第一步:设置SET GLOBAL log_bin_trust_function_creators=TRUE;
如果报ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)这种错误

第二步:

Sql代码  收藏代码
  1. DELIMITER $$   
  2.   
  3. USE `zhiku`$$   
  4.   
  5. DROP FUNCTION IF EXISTS `getChildDept`$$   
  6.   
  7. CREATE  FUNCTION `getChildDept`(rootId INTRETURNS TEXT CHARSET utf8   
  8. BEGIN  
  9.     DECLARE sTemp VARCHAR(1000);   
  10.     DECLARE sTempChd VARCHAR(1000);   
  11.     SET sTemp = '$';   
  12.     SET sTempChd =CAST(rootId AS CHAR);   
  13.     WHILE sTempChd IS NOT NULL DO   
  14.         SET sTemp = CONCAT(sTemp,',',sTempChd);   
  15.         SELECT GROUP_CONCAT(id) INTO sTempChd FROM zk_departments WHERE FIND_IN_SET(parent_id,sTempChd)>0;   
  16.     END WHILE;   
  17.     RETURN sTemp;   
  18.     END$$   
  19. DELIMITER ;  
DELIMITER $$

USE `zhiku`$$

DROP FUNCTION IF EXISTS `getChildDept`$$

CREATE  FUNCTION `getChildDept`(rootId INT) RETURNS TEXT CHARSET utf8
BEGIN
	DECLARE sTemp VARCHAR(1000);
	DECLARE sTempChd VARCHAR(1000);
	SET sTemp = '$';
	SET sTempChd =CAST(rootId AS CHAR);
	WHILE sTempChd IS NOT NULL DO
		SET sTemp = CONCAT(sTemp,',',sTempChd);
		SELECT GROUP_CONCAT(id) INTO sTempChd FROM zk_departments WHERE FIND_IN_SET(parent_id,sTempChd)>0;
	END WHILE;
	RETURN sTemp;
    END$$
DELIMITER ;

 

第三步:直接调用
SELECT DISTINCT(d.user_id) AS user_id,d.dept_id,u.compellation FROM zk_user_departments d INNER JOIN zk_users u ON u.id=d.user_id  AND  INSTR(u.pinyin,'h')=2 WHERE FIND_IN_SET(d.dept_id, getChildDept(128)) GROUP BY d.user_id;

放在cakephp为:

Php代码  收藏代码
  1. $conditions = array('FIND_IN_SET(dept_id, getChildDept('.$dept_id.'))');   
  2.             $condition_join = '`User`.`id` = `UserDepartment`.`user_id`';   
  3.             if(!emptyempty($c))$condition_join  .= ' AND INSTR(User.pinyin,"'.$c.'")=2';   
  4.             //分页   
  5.             $this->paginate = array(   
  6.                     'UserDepartment' => array(   
  7.                             'conditions' => $conditions,   
  8.                             'order'      => array('dept_id'=>'ASC'),   
  9.                             'limit'      => 10,   
  10.                             'recursive'  => -1,   
  11.                             'group'      => array('user_id'),   
  12.                             'fields'     => array('user_id','dept_id'),   
  13.                             'joins'      => array(array(   
  14.                                                  'alias' => 'User',   
  15.                                                  'table' => 'zk_users',   
  16.                                                  'type' => 'INNER',   
  17.                                                  'conditions' => $condition_join,   
  18.                                             )),   
  19.                     )   
  20.             );   
  21.             $data = $this->paginate('UserDepartment');  
$cOnditions= array('FIND_IN_SET(dept_id, getChildDept('.$dept_id.'))');
			$condition_join = '`User`.`id` = `UserDepartment`.`user_id`';
        	if(!empty($c))$condition_join  .= ' AND INSTR(User.pinyin,"'.$c.'")=2';
        	//分页
			$this->paginate = array(
                	'UserDepartment' => array(
                    	    'conditions' => $conditions,
                   	     	'order'      => array('dept_id'=>'ASC'),
                  	      	'limit'      => 10,
                        	'recursive'  => -1,
        					'group'		 => array('user_id'),
        					'fields'     => array('user_id','dept_id'),
							'joins'      => array(array(
												 'alias' => 'User',
            									 'table' => 'zk_users',
            									 'type' => 'INNER',
												 'conditions' => $condition_join,
											)),
                	)
        	);
        	$data = $this->paginate('UserDepartment');
 

 

 


推荐阅读
  • 本文介绍了数据库体系的基础知识,涵盖关系型数据库(如MySQL)和非关系型数据库(如MongoDB)的基本操作及高级功能。通过三个阶段的学习路径——基础、优化和部署,帮助读者全面掌握数据库的使用和管理。 ... [详细]
  • JavaScript 中创建对象的多种方法
    本文详细介绍了 JavaScript 中创建对象的几种常见方式,包括对象字面量、构造函数和 Object.create 方法,并提供了示例代码和属性描述符的解释。 ... [详细]
  • 本文详细介绍了优化DB2数据库性能的多种方法,涵盖统计信息更新、缓冲池调整、日志缓冲区配置、应用程序堆大小设置、排序堆参数调整、代理程序管理、锁机制优化、活动应用程序限制、页清除程序配置、I/O服务器数量设定以及编入组提交数调整等方面。通过这些技术手段,可以显著提升数据库的运行效率和响应速度。 ... [详细]
  • 在Fedora 31上部署PostgreSQL 12
    本文详细介绍如何在Fedora 31操作系统上安装和配置PostgreSQL 12数据库。包括环境准备、安装步骤、配置优化以及安全设置,确保数据库能够稳定运行并提供高效的性能。 ... [详细]
  • 本文介绍了解决在Windows操作系统或SQL Server Management Studio (SSMS) 中遇到的“microsoft.ACE.oledb.12.0”提供程序未注册问题的方法,特别针对Access Database Engine组件的安装。 ... [详细]
  • 本章详细介绍SP框架中的数据操作方法,包括数据查找、记录查询、新增、删除、更新、计数及字段增减等核心功能。通过具体示例和详细解析,帮助开发者更好地理解和使用这些方法。 ... [详细]
  • 使用JS、HTML5和C3创建自定义弹出窗口
    本文介绍如何结合JavaScript、HTML5和C3.js来实现一个功能丰富的自定义弹出窗口。通过具体的代码示例,详细讲解了实现过程中的关键步骤和技术要点。 ... [详细]
  • 本文深入探讨了MySQL中常见的面试问题,包括事务隔离级别、存储引擎选择、索引结构及优化等关键知识点。通过详细解析,帮助读者在面对BAT等大厂面试时更加从容。 ... [详细]
  • 本文详细介绍了如何解决 Microsoft SQL Server 中用户 'sa' 登录失败的问题。错误代码为 18470,提示该帐户已被禁用。我们将通过 Windows 身份验证方式登录,并启用 'sa' 帐户以恢复其访问权限。 ... [详细]
  • 在年前忙碌的家务和年后走亲访友之后,终于有时间重新投入到编程的世界中。年前遇到了连通器问题的困扰,希望今晚能够顺利解决。新的一年,新的开始,期待在技术领域取得更大的进步。 ... [详细]
  • Android Studio 安装与配置指南
    本教程详细介绍了如何下载并安装 Android Studio,包括设置 SDK 路径和优化启动性能的方法。通过这些步骤,您可以顺利地开始开发 Android 应用。 ... [详细]
  • 本文详细介绍了福昕软件公司开发的Foxit PDF SDK ActiveX控件(版本5.20),并提供了关于其在64位Windows 7系统和Visual Studio 2013环境下的使用方法。该控件文件名为FoxitPDFSDKActiveX520_Std_x64.ocx,适用于集成PDF功能到应用程序中。 ... [详细]
  • 卫青与汉武帝的君臣关系及家族命运
    本文探讨了卫青与汉武帝之间的特殊关系,以及卫青去世后其家族的命运。卫青不仅是汉武帝的重要将领,还通过婚姻关系成为皇亲国戚。然而,卫青去世后,其家族并未立即遭到灭顶之灾,而是逐渐因政治风波受到牵连。 ... [详细]
  • 如何在AE中创建裂变式加载动画
    本文将详细介绍如何使用Adobe After Effects (AE) 制作一个裂变式加载动画。通过简单的步骤,您可以轻松创建出引人注目的转圈式加载效果。 ... [详细]
  • 本文探讨了如何在Hive(基于Hadoop)环境中编写类似SQL的语句,以去除字段中的空格。特别是在处理邮政编码等数据时,去除特定位置的空格是常见的需求。 ... [详细]
author-avatar
手机用户2602939201
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有