标签: zend-db-select

Zend Framework:如何使用Joins在一个查询中组合三个表?

我有三个这样的表:

人员表:

person_id |    name     |   dob
--------------------------------
    1     |   Naveed    |  1988
    2     |   Ali       |  1985
    3     |   Khan      |  1987
    4     |   Rizwan    |  1984
Run Code Online (Sandbox Code Playgroud)

地址表:

address_id |  street  |   city  |  state  | country
----------------------------------------------------
   1       | MAJ Road | Karachi |  Sindh  | Pakistan
   2       | ABC Road | Multan  |  Punjab | Pakistan
   3       | XYZ Road | Riyadh  |    SA   | SA
Run Code Online (Sandbox Code Playgroud)

Person_Address表:

person_id | address_id
----------------------
   1      |     1
   2      |     2 …
Run Code Online (Sandbox Code Playgroud)

sql database zend-framework join zend-db-select

5
推荐指数
1
解决办法
9553
查看次数

Zend PDO错误 - 我该如何调试它?

我使用Zend Framework和Mysql有一个奇怪的问题.我生成了一个查询:

SELECT events.idUser, szForename, szLastname, readers.szName, idZoneFrom, events.dtTime FROM events, users, readers WHERE events.idUser = users.idUser AND events.idReader = readers.idReader AND dtTime >= '2010:02:15 0:00:00' AND dtTime < '2010:02:16 0:00:00' ORDER BY dtTime
Run Code Online (Sandbox Code Playgroud)

如果我在某些控制台(如pma,navicat或shell客户端)中运行它,但是当我尝试使用通过推荐扩展Zend_Db_Table的模型运行它时查询工作正常

$arResult = $this->getDefaultAdapter()->query($szQuery)->fetchAll();
Run Code Online (Sandbox Code Playgroud)

它与1064错误:

enter code here

An error occurred
Application error
Exception information:

Message: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to …
Run Code Online (Sandbox Code Playgroud)

php mysql zend-framework zend-db zend-db-select

5
推荐指数
1
解决办法
2079
查看次数

依靠Zend_Db_Select

假设我有一个随机的zend_db_select对象.

如何对该对象执行计数,因此我知道满足查询的项目数量.

我尝试了以下方法:

$data->TotalRecords = $select->columns(new Zend_Db_Expr('COUNT(*)'))->query()->fetch();
Run Code Online (Sandbox Code Playgroud)

但这给了我以下错误:

消息:没有为FROM子句指定表

查询本身工作正常并返回结果集.

php zend-framework zend-db-select

4
推荐指数
2
解决办法
9695
查看次数

如何将普通的sql查询转换为Zend_Db_Select?

嗨,我想将我正常的mysql查询转换为zend.db.select;

我想使用这个脚本:

$select = $db->select();

// Add a FROM clause
$select->from( ...specify table and columns... )

// Add a WHERE clause
$select->where( ...specify search criteria... )

// Add an ORDER BY clause
$select->order( ...specify sorting criteria... );

$select->limit(20, 10);
Run Code Online (Sandbox Code Playgroud)

我的查询如下

SELECT 
    IF(derived_messages.toid = '$user', derived_messages.fromid, 
    derived_messages.toid) friend1,c.UserName,
    derived_messages.message, derived_messages.fromid, derived_messages.toid,
    derived_messages.is_read,derived_messages.type,derived_messages.id as mesid,                    
    derived_messages.date,
    (SELECT M.message_id FROM messagesmapped M where M.message_id= derived_messages.id AND M.user_id ='$user' AND M.important = 1) as MesMapid
    FROM 
    (               
    SELECT * 
    FROM messages
    WHERE messages.deleted_by NOT …
Run Code Online (Sandbox Code Playgroud)

php mysql zend-framework zend-db-select

4
推荐指数
1
解决办法
1507
查看次数

何时使用哪个Zend_Db类?Zend_Db_Select与Zend_Db_Table_Abstract

认为可以使用Zend_Db_Select或Zend_Db_Table_Abstract编写选择查询,但我不明白何时使用两者中的哪一个.

一个比另一个更优化的东西?与其中一个连接"更容易"吗?

谢谢!

zend-framework zend-db-table zend-db zend-db-select

3
推荐指数
1
解决办法
1158
查看次数

如何在Zend_Db_Select中使用MySQL GROUP BY修饰符WITH ROLLUP?

我的Web应用程序(PHP/MySQL + Zend)中的SQL查询使用许多参数来构建搜索查询.但是,提取的记录应按两列分组以获得子总计.WITH ROLLUP似乎是查找小计的好方法,但Zend_Db_Select不支持此修饰符.有什么工作吗?

mysql zend-framework rollup zend-db-select

3
推荐指数
1
解决办法
1455
查看次数

Zend_Db_Select:在子选择上LEFT JOIN

我有一个查询,LEFT JOIN在子选择上执行.此查询在高负载环境中运行,并在设置要求内执行.查询(高度简化)看起来像:

SELECT
  table_A.pKey
, table_A.uKey
, table_A.aaa
, table_B.bbb
, alias_C.ccc
, alias_C.ddd
FROM table_A
INNER JOIN table_B ON table_A.pKey = table_B.pKey
LEFT JOIN (

    SELECT
      table_X.pKey
    , table_X.ccc
    , table_Y.ddd
    FROM table_X
    INNER JOIN table_Y ON table_X.pKey = table_Y.pKey

  ) AS alias_C ON table_A.uKey = alias_C.pKey;
Run Code Online (Sandbox Code Playgroud)

(由于各种原因,不可能将子选择重写为(直接)LEFT JOIN).

现在,我无法LEFT JOIN on subselect与之合作Zend_Db_Select.我已经尝试了我能想到的一切,但它不起作用.


所以我的问题是:

  • 是不是可以像上面描述的那样进行查询 Zend_Db_Select
  • 在Zend Framework中使用它需要什么语法?

subquery left-join zend-db zend-db-select

3
推荐指数
1
解决办法
5576
查看次数

将Zend Db Select查询转换为sql查询

有没有办法在查询数据库之前将Zend db Select或Zend DB查询转换为SQL查询?还有其他解决方法吗?

因为我想构建一个Zend DB无法处理的更复杂的SQL查询,而不修改我当前的Zend db代码结构.

sql zend-framework zend-db zend-db-select

3
推荐指数
2
解决办法
3274
查看次数

Zend_Db_Select LIKE子句

如何设置此查询

SELECT city_id FROM cities WHERE city_name LIKE "%Vicenza%"
Run Code Online (Sandbox Code Playgroud)

使用Zend_Db_Select类?

zend-framework zend-db zend-db-select

2
推荐指数
1
解决办法
5984
查看次数

Zend_Db按字段顺序排序

我正在使用以下方法从模型中输出选择菜单的内容:

$select = $this->select();
$select->order('name');
return $this->fetchAll($select);
Run Code Online (Sandbox Code Playgroud)

但是,我想要做的是按特定值排序,然后按名称列排序.SQL看起来像这样:

SELECT * FROM `names` ORDER BY `name` = 'SomeValue' DESC,`name`
Run Code Online (Sandbox Code Playgroud)

示例SQL代码:

CREATE TABLE IF NOT EXISTS `names` (
  `id` int(11) NOT NULL auto_increment,
  `name` varchar(100) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;

INSERT INTO `names` (`id`, `name`) VALUES
(1, 'rob'),
(2, 'dave'),
(3, 'andy'),
(4, 'paul'),
(5, 'jason'),
(6, 'john');

SELECT *
FROM `names`
ORDER BY `name` = 'john' DESC , `name`
Run Code Online (Sandbox Code Playgroud)

返回值:

6   john
3   andy
2 …
Run Code Online (Sandbox Code Playgroud)

mysql sql zend-framework zend-db zend-db-select

1
推荐指数
1
解决办法
4145
查看次数

在Zend Framework 2中按字段排序SQL

你如何(优雅地)使用Zend Framework 2中的闭包来按字段排序select语句?

我有以下PHP代码:

$gateway = new \Zend\Db\TableGateway\TableGateway('table_name', $adapter);
$select = $gateway->select(function($select){
    $select->where->in('id', array(4, 2, 3, 1));
    // insert some awesome ordering magic here..!
});
Run Code Online (Sandbox Code Playgroud)

我知道你可以很容易地做到这一点:

    ...
    $select->order(array('id ASC'));
    ...
Run Code Online (Sandbox Code Playgroud)

但是,这只是按升序id值排序结果,我需要通过特定的id序列对它们进行排序(即:按序列排序)4, 2, 3, 1.

是否有一个优雅的Zend Framework 2功能,我可以在这里使用id它们自己订购?有效地创建SQL:

select * from table_name 
    where 'id' in (4, 2, 3, 1)
    order by field('id', (4, 2, 3, 1));
Run Code Online (Sandbox Code Playgroud)

php zend-db zend-db-select zend-framework2

1
推荐指数
1
解决办法
5865
查看次数