Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
zend-mysql将一个字段值的值转换为另一个字段名[已编辑]_Mysql_Zend Framework - Fatal编程技术网

zend-mysql将一个字段值的值转换为另一个字段名[已编辑]

zend-mysql将一个字段值的值转换为另一个字段名[已编辑],mysql,zend-framework,Mysql,Zend Framework,以下是我的表格说明: 创建表格my_表格 (idint,namevarchar(9),valuevarchar(13)) ; 插入到我的表中 (id,name,value) 价值观 (0,“时区”、“欧洲/伦敦”), (0,'语言','英语'), (0,“国家”,“45”), (0,'something','x'), (1,“时区”、“欧洲/巴黎”), (1,“语言”、“fr”), (1,‘国家’、‘46’) ; 我的结果应该是 ID TIMEZONE LANGUAGE

以下是我的表格说明:
创建表格my_表格 (
id
int,
name
varchar(9),
value
varchar(13)) ;

插入到我的表中 (
id
name
value
) 价值观 (0,“时区”、“欧洲/伦敦”), (0,'语言','英语'), (0,“国家”,“45”), (0,'something','x'), (1,“时区”、“欧洲/巴黎”), (1,“语言”、“fr”), (1,‘国家’、‘46’) ;

我的结果应该是

  ID     TIMEZONE       LANGUAGE      COUNTRY SOMETHING
  0      Europe/London  en            45      x
  1      Europe/Paris   fr            46      (null)
如何使用Zend_Db_表或Zend_Db_选择在Zend Framework中执行此查询?非常感谢你

[根据添加的评论编辑查询]

SELECT CONCAT( 'SELECT table.id', GROUP_CONCAT(CONCAT(' , t_', REPLACE(name, '', ''), '`.value AS `', REPLACE(name, '`', ''), '' ) SEPARATOR ''), ' 
FROM table` ', 
GROUP_CONCAT(CONCAT(' LEFT JOIN table AS t_', REPLACE(name, '', ''), '` ON `table`.id = `t_', REPLACE(name, '`', ''), '.id AND t_', REPLACE(name, '', '``'), '.name = ', 
QUOTE(name) ) SEPARATOR ''), ' 
GROUP BY table.id' ) 
INTO @qry FROM (SELECT DISTINCT name FROM table) t;

 PREPARE stmt FROM @qry;
 EXECUTE stmt; 

下面是一个使用DbTable模型的解决方案:

/*accepts a string of SQL*/
public function getQuery($sql) {
    $query = $this->getAdapter->quoteInto($sql);
    $result = $this->getAdapter()->fetchAll($query);
    /*if you want the result as an array instead of an object: $result->toArray()*/
    return $result;
}

我缺乏解析查询和演示流畅界面的SQL能力。祝你好运。

这开始感觉像是家庭作业:)前一个问题不太清楚。那么?用sqlfiddle检查,只有在我们知道name的值时才能工作,除非?您知道如何在没有Zend Framework的情况下编写这样的查询吗?您使用的是什么结构?您是在控制器、映射器还是数据库表模型中执行此操作?这个信息会使构建答案变得更容易。嗨,Rockey,这里有一个清晰的例子,但可以通过mysql完成。很抱歉,这对我来说仍然没有任何意义。看起来太复杂了。如果我在构建表和查询,我将构建一个映射器类,将所需的表映射到每个域实体/对象。看起来您正试图在一个查询中完成尽可能多的任务。我做的很简单,但事实并非如此。
/*accepts a string of SQL*/
public function getQuery($sql) {
    $query = $this->getAdapter->quoteInto($sql);
    $result = $this->getAdapter()->fetchAll($query);
    /*if you want the result as an array instead of an object: $result->toArray()*/
    return $result;
}