10.4. Zend_Db_Select

你能够使用该对象和它的对应方法构建一个select查询语句,然后生成 字符串符用来传送给zend_db_adapter进行查询或者读取结果。

你也能够在你的查询语句中使用绑定的參数,而不须要自己为參数加引號.


10.4.2. 同一表中查询多列数据


10.4.3. 多表联合查询


10.4.4. WHERE条件


10.4.5. GROUP BY分句


10.4.6. HAVING 条件


10.4.7. ORDER BY 分句


10.4.8. 通过总数和偏移量进行LIMIT限制

Zend_db_select能够支持数据库层的limit语句限制。对于一些数据库,比如mysql 和postgresql。实现这些是相对easy的,由于这些数据库本身就支持“limit:count” 语法。

对于其它一些数据库来说。比如微软的sqlserver和oracle,要实现limit功能 就不那么简单了,由于他们本身就根本不支持limit语句。

MS-SQL有一个top语 句来实现,而oracle要实现limit功能,查询语句的写法就更特殊一些。

由于 zend_db_select内在地工作的方式。我们能够重写select语句以在oracle中 实现上述开源数据库系统的limit功能。

要通过设定查询的总数和偏移量对返回的结果进行限制,能够使用limit()方法, 总数值和一个可选的偏移量作为调用该方法的參数。

<?php

// 首先,一个简单的 "LIMIT :count"
$select = $db->select();
$select->from('foo', '*');
$select->order('id');
$select->limit(10); //
// 在mysql/psotgreSql/SQLite,能够得到这种语句:
//
// SELECT * FROM foo
// ORDER BY id ASC
// LIMIT 10
//
// 可是在Microsoft SQL下,能够得到这种语句:
//
// SELECT TOP 10 * FROM FOO
// ORDER BY id ASC
//
// // 如今, 是更复杂的 "LIMIT :count OFFSET :offset"方法
$select = $db->select();
$select->from('foo', '*');
$select->order('id');
$select->limit(10, 20); //
// 在mysql/psotgreSql/SQLite,能够得到这种语句:
//
// SELECT * FROM foo
// ORDER BY id ASC
// LIMIT 10 OFFSET 20
//
// 可是在Microsoft SQL下,由于不支持偏移量功能,能够得到这样sql语句:
//
// SELECT * FROM (
// SELECT TOP 10 * FROM (
// SELECT TOP 30 * FROM foo ORDER BY id DESC
// ) ORDER BY id ASC
// )
//
// Zend_Db_Adapter 能够自己主动的完毕sql语句的动态创建.
// ? >

10.4.9. 通过页数和总数进行LIMIT限制

3.2 Zend_Db_Select的更多相关文章

  1. Magento中直接使用SQL语句

    原理: magento是基于Zend Framework的,所以底层用的还是zend的zend db 在文件app/code/core/Mage/Catalog/model/Resource/Eav ...

  2. 给 Magento 2 添加缓存层的分析与尝试

    虽然黑色星期五有惊无险的过去了, 但是 Magento 2 社区版无法读写分离这个限制, 始终是悬在整个网站上的一把利剑. 我之前尝试过给 Magento 2 写一个 MySQL 读写分离的插件, 在 ...

随机推荐

  1. Java并发包之闭锁/栅栏/信号量

    二.同步工具类详解 1.Semaphore信号量:跟锁机制存在一定的相似性,semaphore也是一种锁机制,所不同的是,reentrantLock是只允许一个线程获得锁,而信号量持有多个许可(per ...

  2. Redis-NoSql 概述,NoSql的优点

    全称 not only sql: 全新数据库理念:非关系型数据库: 高并发读写:海量数据的高效率存储和访问:高可扩展性和高可用性: 键值对存储:列存储:文档数据库:图形数据库: 易扩展:灵活的数据模型 ...

  3. cocos2d-x 学习笔录:将iOS项目编译成Andriod项目

    一.Android 环境搭建 1.安装Andriod-NDK(Native Development Kit) 新建一个文件夹(eg:NDK),解压Android-NDK,将解压文件与压缩包放在一个目录 ...

  4. Hibernate3的jar包

    一.hibernate3包说明 说明: Hibernate 软件包中的Hibernate3.jar 是我们需要使用的Hibernate 工具,其他引用的 Jar 文件位于lib 子目录下,Hibern ...

  5. Delphi中Frame的使用方法(1)

    Frame是组件面板上的第一个组件,但不是每个人都知道怎么用它,因为它不像Button和Label一样简单明了.实际上,Frame按钮只是打开一个Frame的列表,如果你没有创建任何的Frame,自然 ...

  6. Linux内核开发者峰会照的全家福

    刚才看到一张Linux内核开发者峰会照的全家福,有历史价值,给大家分享一下.上面有Torvalds(大致在中间).Andrew Morton(目前的内核主要维护者,第二排右数第二个).Alan Cox ...

  7. 如何查看Oracle日志

    Oracle日志查看 一.Oracle日志的路径: 登录:sqlplus "/as sysdba" 查看路径:SQL> select * from v$logfile; SQ ...

  8. SQL 之 Group By

    SQL 之 Group By Group By从字面意义上理解就是根据By指定的规则对数据进行分组,所谓的分组就是将一个数据表划分成若干个小区域. 例如:有这么一张表

  9. redhat6.3 找不到libXP.so.6解决方法

    最近做redhat安装matlab2008a 操作,遇到上面的问题,先记录如下: 网上找到安装包:libXp-1.0.2-1mamba.x86_64.rpm 然后使用命令: sudo rpm -ivh ...

  10. (转)intellij idea svn 修改文件后,父文件夹也标注修改

    svn文件修改后,默认只有当前文件更改而父文件没有标注,很不直观:查了一顿后,发现,可以设置: File—->settings—->version control—–>勾选show ...