- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
首先,我对 kohana 很陌生,但我对更流行的 Yii 和 Yii2 有丰富的经验。
我正在处理复杂的配置,它使用查询生成器从跳跃模型调用 MsSQL 数据库。现在我不得不优化代码,但遇到了一个错误,我自己很难解决。
对 MsSQL 数据库的请求分为两部分。这是子查询,它应该执行:
$leap_subquery = DB_SQL::select($this->data_source())
->column('lg.SessionID','SESSION_ID')
->column(DB_SQL::expr("CAST(DATEADD(HOUR, 3, lg.MsgTimestamp) AS DATE)"),'ACTIVITY_DT')
->column(DB_SQL::expr("CAST(DATEADD(HOUR, 3, lg.MsgTimestamp) AS TIME(0))"),'ACTIVITY_TM')
->column(DB_SQL::expr("RIGHT(REPLACE(cr.ORIGINATINGNUMBER,'tel:',''),10)"),'PHONE_NUM')
->column(DB_SQL::expr("RIGHT(REPLACE(cr.DESTINATIONNUMBER,'tel:',''),5)"),'DESTINATION_NUM')
->column(DB_SQL::expr("CAST(CASE
WHEN UPPER(lg.ActivityName) = 'VDUID' THEN lg.VarValue
ELSE NULL
END AS VARCHAR(50))"),'CALL_ID')
->column(DB_SQL::expr("CASE
WHEN UPPER(LEFT(lg.ActivityName,21)) = 'КАЧЕСТВО_ОБСЛУЖИВАНИЯ'
THEN CAST(RIGHT(lg.ActivityName,1) AS NUMERIC)
ELSE NULL
END"),'SERVICE_QUALITY')
->column(DB_SQL::expr("CASE
WHEN UPPER(LEFT(lg.ActivityName,15)) = 'СКОРОСТЬ_ОТВЕТА'
THEN CAST(RIGHT(lg.ActivityName,1) AS NUMERIC)
ELSE NULL
END"),'RESPONSE_SPEED')
->column(DB_SQL::expr("CASE
WHEN UPPER(LEFT(lg.ActivityName,12)) = 'ВОПРОС_РЕШЁН' AND RIGHT(lg.ActivityName,1) = '1' THEN 1
WHEN UPPER(LEFT(lg.ActivityName,12)) = 'ВОПРОС_РЕШЁН' AND RIGHT(lg.ActivityName,1) = '2' THEN 0
ELSE NULL
END"),'QUESTION_SOLUTION')
->column(DB_SQL::expr("CASE
WHEN UPPER(LEFT(lg.ActivityName,18)) = 'ДОБРОЖЕЛАТЕЛЬНОСТЬ'
THEN CAST(RIGHT(lg.ActivityName,1) AS NUMERIC)
ELSE NULL
END"),'AMIABILITY')
->column(DB_SQL::expr("CASE
WHEN UPPER(LEFT(lg.ActivityName,7)) = 'ЯСНОСТЬ'
THEN CAST(RIGHT(lg.ActivityName,1) AS NUMERIC)
ELSE NULL
END"),'CLEARNESS')
->column(DB_SQL::expr("CASE
WHEN UPPER(LEFT(lg.ActivityName,14)) = 'ВНИМАТЕЛЬНОСТЬ'
THEN CAST(RIGHT(lg.ActivityName,1) AS NUMERIC)
ELSE NULL
END"),'ATTENTION')
->from('VPStats.dbo.VPAppLog','lg')
->join('INNER','VPStats.dbo.CDR','cr')->on('cr.SESSIONID','=','lg.SessionID')
->where(DB_SQL::expr("CAST(DATEADD(HOUR, 3, lg.MsgTimestamp) AS DATE)"), '=', DB_SQL::expr("CAST('".$date."' AS DATE)"))
->where(DB_SQL::expr("UPPER(lg.ApplicationID)"), '=', 'QUALITY')
->where_block('(')
->where(DB_SQL::expr("UPPER(LEFT(lg.ActivityName,21))"), '=', 'КАЧЕСТВО_ОБСЛУЖИВАНИЯ' )
->where(DB_SQL::expr("UPPER(LEFT(lg.ActivityName,15))"), '=', 'СКОРОСТЬ_ОТВЕТА', 'OR')
->where(DB_SQL::expr("UPPER(LEFT(lg.ActivityName,12))"), '=', 'ВОПРОС_РЕШЁН', 'OR')
->where(DB_SQL::expr("UPPER(LEFT(lg.ActivityName,18))"), '=', 'ДОБРОЖЕЛАТЕЛЬНОСТЬ', 'OR')
->where(DB_SQL::expr("UPPER(LEFT(lg.ActivityName,7))"), '=', 'ЯСНОСТЬ', 'OR')
->where(DB_SQL::expr("UPPER(LEFT(lg.ActivityName,14))"), '=', 'ВНИМАТЕЛЬНОСТЬ', 'OR')
->where(DB_SQL::expr("UPPER(lg.ActivityName)"), '=', 'VDUID', 'OR')
->where_block(')')
->statement(FALSE);
但是下一个查询应该从第一个查询中查询一些数据:
$leap_query = DB_SQL::select($this->data_source())
->column(DB_SQL::expr("MAX(VP.ACTIVITY_DT"), 'date' )
->column(DB_SQL::expr("MAX(VP.ACTIVITY_TM"), 'time' )
->column(DB_SQL::expr("MAX(VP.PHONE_NUM)"), 'number' )
->column(DB_SQL::expr("MAX(VP.SERVICE_QUALITY)"), 'answer_1' )
->column(DB_SQL::expr("MAX(VP.QUESTION_SOLUTION)"), 'answer_2' )
->column(DB_SQL::expr("MAX(VP.RESPONSE_SPEED)"), 'answer_3' )
->column(DB_SQL::expr("MAX(VP.AMIABILITY)"), 'answer_4' )
->column(DB_SQL::expr("MAX(VP.CLEARNESS)"), 'answer_5' )
->column(DB_SQL::expr("MAX(VP.ATTENTION)"), 'answer_6' )
->column(DB_SQL::expr("MAX(VP.DESTINATION_NUM)"), 'skill' )
->column(DB_SQL::expr("MAX(VP.CALL_ID)"), 'call_id' )
->from(DB::expr("(".$leap_subquery.")"), 'VP')
->group_by(array('VP.SESSION_ID'))
->having(DB_SQL::expr("MAX( CALL_ID )"), 'IS NOT', NULL)
->having_block('(')
->having(DB_SQL::expr("MAX(VP.SERVICE_QUAILITY)"), 'IS NOT', NULL )
->having(DB_SQL::expr("MAX(VP.RESPONSE_SPEED)"), 'IS NOT', NULL, 'OR')
->having(DB_SQL::expr("MAX(VP.QUESTION_SOLUTION)"), 'IS NOT', NULL, 'OR')
->having(DB_SQL::expr("MAX(VP.AMIABILITY)"), 'IS NOT', NULL, 'OR')
->having(DB_SQL::expr("MAX(VP.CLEARNESS)"), 'IS NOT', NULL, 'OR')
->having(DB_SQL::expr("MAX(VP.ATTENTION)"), 'IS NOT', NULL, 'OR')
->having_block(')');
但是如果第一个 block 给我一个结果,调用第二个 block 给我一个与...echm...翻译有关的错误??? ……:
ErrorException [ Notice ]: Array to string conversion
SYSPATH/classes/kohana/i18n.php [ 164 ]
return empty($values) ? $string : strtr($string, $values);
我完全无法理解。我猜想在某些地方出现了语法错误并且构建器无法解决这个问题,但我只能猜测和谷歌......请帮助我理解这个员工的性质......!?
向上:对正在尝试翻译的字符串进行 var 转储,并得到错误的字符串)):
function __($string, array $values = NULL, $lang = 'en-us')
{
var_dump($string, $values, $lang);die();
.......
return empty($values) ? $string : strtr($string, $values);
}
string(55) "Message: Failed to query SQL statement. Reason: :reason" array(1) { ':reason' => array(5) { [0] => string(5) "00000" [1] => int(0) [2] => string(3276) "(null) [0] (severity 0) [SELECT MAX(VP.ACTIVITY_DT AS [date], MAX(VP.ACTIVITY_TM AS [time], MAX(VP.PHONE_NUM) AS [number], MAX(VP.SERVICE_QUALITY) AS [answer_1], MAX(VP.QUESTION_SOLUTION) AS [answer_2], MAX(VP.RESPONSE_SPEED) AS [answer_3], MAX(VP.AMIABILITY) AS [answer_4], MAX(VP.CLEARNESS) AS [answer_5], MAX(VP.ATTENTION) AS [answer_6], MAX(VP.DESTINATION_NUM) AS [skill], MAX(VP.CALL_ID) AS [call_id] FROM (SELECT [lg].[SessionID] AS [SESSION_ID], CAST(DATEADD(HOUR, 3, lg.MsgTimestamp) AS DATE) AS [ACTIVIT"... [3] => int(0) [4] => int(0) } } string(5) "en-us"
也许任何人...我看到查询看起来很奇怪。 SQL中应该有“[”&“]”吗?
最佳答案
这里是错误:
->from(DB::expr("(".$leap_subquery.")"), 'VP')
应该是:
->from($leap_subquery, 'VP')
并且不执行$leap_subquery
关于php - 带有查询生成器的 kohana i18n errorException (kohana->leap->mssql),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32400482/
我在我的 Linux(Ubuntu 16.04)服务器上安装 MSSQL 时遇到问题。 我使用了微软的手册,但我总是在同一阶段失败。 实际上,由于内核问题,Docker 不是替代品。 后: sudo
我正在尝试导入 mssql 我有一个 js 文件,它自己可以正常工作,但我需要这样做,以便我可以从 react js 环境中调用该函数,而不仅仅是节点 import React, { Componen
我对 python 比较陌生,对 django 也很陌生。 我正在尝试使用 django 连接到 MSSQL 服务器。我安装了django-mssql(也许它需要放在项目目录中的某个地方?)。 但是,
我想为我的项目使用 mssql 数据库。我采用了 node-mssql 模块 ( https://www.npmjs.com/package/mssql ) 并使用 Microsoft SQL Ser
我试图恢复 centos 服务器内的 mssql 文件。 .bak 文件已放入服务器并将用户设为 mssql。 [![在此处输入图像描述][1]][1] 这是我运行此命令进行恢复时的错误。 sqlcm
我正在尝试建立从 MSSQL (express 2008) 到 Mysql 的特定查询记录集的单向同步。这是该查询。 SELECT [datafk] ,[datahistorypk] ,[da
我正在尝试在 node.js 中编写脚本来查询 MSSQL 数据库。我是 javascript 的新手,node.js 的新手,VSCode 的新手,但我知道一些关于 SQL 的事情。我有工作代码,但
我正在尝试将我的 Golang 应用程序连接到 MSSQL 2014。 我已经成功使用 - https://github.com/denisenkom/go-mssqldb为此,我只在我的 MSSQL
在一个应用程序中,我有一个全局作用域 var db *sql.DB 稍后调用 slcstrSource, slcint64Timestamp, slcstrContent, err := DB_fun
我从服务器 A 创建了一个具有以下规范的 .bak 文件(备份):Windows Server 2003、MSSQL 2005。现在我想在具有以下规范的新服务器 B 上恢复此备份:Windows 8、
我的任务是将 Microsoft SQL Server 2005 数据库迁移到 MySQL 5.6(这些都是本地运行的数据库服务器),非常感谢您的帮助。 -MSSQL 源数据库有 latin1 排序规
我在这里不知所措。总的来说,我对 python 和 odbc 很陌生。但是,我需要找到一种方法,在 Web GUI 的后端有一个 python 脚本,作为我公司的内部工具,从以下位置与 MSSQL 服
下列语句部分是Mssql语句,不可以在access中使用。 SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SEL
1.--区分大小写 select * from a where a='AbCdE' collate Ch
-->分段更新 -->Author:wufeng4552 -->Date :2009-10-07 08:13:41 --如:更新'a,a,a,a,a' 第三段a 為 'test'
这几天突然有个想法:希望能够自动监控、收集数据库服务器的磁盘容量信息,当达到一个阀值后,自动发送告警邮件给DBA,将数据库磁盘详细信息告知DBA,提醒DBA做好存储规划计划,初步的想法是通过作业调用
看到网上好多人问为什么我的SQL 2008只能用服务器计算器名登录,而不能用IP登录呢?我也遇到过这个问题,看到网上的回答各有千秋,但没有一个写得比较便于操作的。经过一番网络关键字(SQL 2008
最近在做一个几百万条数据的分页查询,研究了各种方案,在本机上用项目的实际数据库做测试,测试过程 is very 痛苦,不堪回首ing。现在废话不多说,直接上结果,相信这也是大多数搜索答案的人最愿意看
MS SQL基本语法及实例操作 一:建表并初始化 ============================ create database mf2011 --创
地图数据存放在sqlserver 2008中,使用mapxtreme7 开发时,使用Feature.Update()方法时出错的提示包含“MSSQL 将截断字符串或二进制数据” 主要原因就是给某个
我是一名优秀的程序员,十分优秀!