How to use GROUP_CONCAT with Zend Framework?

后端 未结 2 1602
野趣味
野趣味 2020-12-31 23:35

Assume that I have a table : students

______________________________________________________
|id   | name           | school        | class        |
________         


        
相关标签:
2条回答
  • 2020-12-31 23:44

    Zend Expression gave me problems, the easiest way for me was:

    $select->from($this,
        array(
             'listings.*',
             '(SELECT GROUP_CONCAT(DISTINCT ecg.listing_cat_name,"*|*",ecg.listing_cat_id SEPARATOR "-|-") FROM listings_cats AS ecg 
    LEFT JOIN listings_to_listings_cats ON listings_to_listings_cats.listing_cat_id=ecg.listing_cat_id
    WHERE listings_to_listings_cats.listing_id=listings.listing_id
    LIMIT 7 ) AS catGrouping'))
    

    Here I'm concatenating a list of category names and ids, which I explode in my search results and print a list of clickable child categories per parent record. You can obviously add further Joins and other conditions to the from() as the above will be treated as a sub query.

    0 讨论(0)
  • 2021-01-01 00:05

    I guess it will be something like this. Try it.

    $table = Your_DbTable_Class();
    $select = $table->select()
              ->setIntegrityCheck(false)
              ->from(array('a' => 'students'), array( 'class' => 'class' , 'names' => new Zend_Db_Expr('GROUP_CONCAT(a.name)')) )
              ->where( 'a.school = ?', 'ABC' ) 
              ->group('a.class');
    

    When I assemble it, it gives me following query:

    SELECT `a`.`class`, GROUP_CONCAT(a.name) AS `names` FROM `students` AS `a` 
    WHERE (a.school = 'ABC')
    GROUP BY `a`.`class`
    

    Is it what you are looking for ?

    0 讨论(0)
提交回复
热议问题