sql语句的查询

一: Zend_Db_Select

1.给视图赋值(以数组的形式赋值)
     $this->view->pageParam = array ();                   //定义赋值为一个数组
     $this->view->pageParam ['page'] = $page;         //给数组里面添加键和值
     $this->view->pageParam ['order'] = $this->_getParam ( 'order', null );

2.给视图赋值(单纯的为某个值赋值)
    $this->view->EndTime = $EndTime;
    $this->view->SeasonId = $SeaSonId;

3.查询(直接)
  $adapater = Zend_Db_Table::getDefaultAdapter();         //获取Zend_Db
  $result = $adapater->fetchAll("select * from  product");  //结果集为一个数组

4.在model方法里面写查询

     class Application_Model_Mappers_Order
{
    /**

     * 命名空间
     * @var String
     */
    protected $_namespace = 'Application_Model_';
    
    /**
     * 默认模型类名
     * @var String
     */
    protected $_defaultModelClass = 'Order';
    
    /**
     * 默认DbTable类名
     * @var String
     */
    protected $_defaultDbTableClass = 'Order';
    
    /**
     * 字段映射
     * @var Array
     */
    protected $_colsMap = array(
        'OrderID' => 'OrderID',
        'OrderNumber'=>'OrderNumber',
        'ProductID' => 'ProductID',
        'Count' => 'Count',
        'TrueCount' => 'TrueCount',
        'UserID' => 'UserID',
    );
    
    /**
     * 查询字段
     * @var Array
     */
    protected $_whereBy = array(
        'OrderNumber',
        'ProductName',
        'KehuName',
    );

    /**
     * 查询字段
     * @var Array
     */

    public  function  fetchData(){
        $dbTableClass = $this->_namespace . 'DbTable_' . $this->_defaultDbTableClass;
        $dbTable = new $dbTableClass;
        $db = $dbTable->getDefaultAdapter();          //获取Zend_Db
        $select = $db->select();                               //获取Zend_Db_Select


        $select->from('order', '*');                                                                      //查询的表名和需要查询的数据
        $select->limit(0,5);                                                                                 //查询的数据条数
        $sql = $select->__toString();                                                                  //获取查询的sql语句
        $result = $db->fetchAll($sql);   或者 $result2 = $db->fetchAll($select);        //获取结果
        

         return  $sql;                    //返回sql语句

         return  $result ;              //获取结果集
        
    }
5.多表查询
$db = Zend_Db_Table::getDefaultAdapter();

$select = $db->select();

 

// SELECT foo.*, bar.*  FROM foo  JOIN bar ON foo.id = bar.id 

$select->from('foo', '*');

$select->join('bar', 'foo.id = bar.id', '*');

 

6.WHERE条件

       当需要要增加where条件时,可以使用where()方法。你可以传送一个 普通的查询语句字符串,也可以传送一个使用?作为占位符的字符串,然 后在占位符处加入通过加引号处理后的数据(将使用Zend_Db_Adapter::quoteInto方法进行数据处理)

 

        6.1 多个where条件默认and

  $select = $db->select();

// SELECT *  FROM round_table  WHERE noble_title = "Sir"  AND favorite_color = "yellow" (需执行的sql语句)

$select->from('round_table', '*'); 

$select->where('noble_title = "Sir"'); 

 $select->where('favorite_color = ?', 'yellow');

       6.2 多个条件或or

SELECT *  FROM foo  WHERE bar = "baz"  OR id IN("1", "2", "3") 

$select->from('foo', '*');

$select->where('bar = ?', 'baz');

$select->orWhere('id IN(?)', array(1, 2, 3);

 

7.GROUP BY分句

// 创建一个$db对象,调用SELECT方法.

$select = $db->select();

// SELECT COUNT(id)   FROM foo   GROUP BY bar, baz 

$select->from('foo', 'COUNT(id)');

$select->group('bar');

$select->group('baz');

// 同样可以这样调用 group() 方法:

$select->group('bar, baz');

 还可以: $select->group(array('bar', 'baz'));

8.having

当需要在查询结果中加入having条件时,可以使用having()方法。 这种方法与where()方法的功能一样。.

 

当你多次调用having()方法时,各个having的条件会“并”在一起进行操作; 假如你需要实现“或 ”操作,可以使用orHaving()方法

 

 

where 是先筛选再group 
having 是先group再筛选
没有group是不能having的

having 和where 都是用来筛选用的  
having 是筛选组 而where是筛选记录
 

 

// 创建一个$db对象,调用SELECT方法.

$select = $db->select(); 

// SELECT COUNT(id) AS count_id    FROM foo     GROUP BY bar, baz      HAVING count_id > "1" 

$select->from('foo', 'COUNT(id) AS count_id');

$select->group('bar, baz');

$select->having('count_id > ?', 1);

 

9.  ORDER BY 分句

 

// 创建一个$db对象,调用SELECT方法.

$select = $db->select(); 

// SELECT * FROM round_table    ORDER BY noble_title DESC, first_name ASC  

$select->from('round_table', '*');

$select->order('noble_title DESC');

$select->order('first_name');

// 同样可以这样调用 order() 方法:

$select->order('noble_title DESC, first_name')

// 还可以: $select->order(array('noble_title DESC', 'first_name'));

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2014-08-21 18:02  狩猎者一号  阅读(194)  评论(0编辑  收藏  举报