2011-06-13 16 views
6

मान लें मैं एक मेज है: छात्रोंज़ेंड फ्रेमवर्क के साथ GROUP_CONCAT का उपयोग कैसे करें?

______________________________________________________ 
|id | name   | school  | class  | 
______________________________________________________ 
| 1 | John   | ABC   | C1   | 
| 2 | Jack   | ABC   | C1   | 
| 3 | Anna   | ABC   | C1   | 
| 4 | Peter   | DEF   | D1   | 
| 5 | Alex   | ABC   | C2   | 
| 6 | Bryan   | ABC   | C2   | 
| 7 | David   | ABC   | C2   | 
| 8 | Cristian  | DEF   | D1   | 
_______________________________________________________ 

इस क्वेरी का उपयोग करना:

____________________________ 
|class | names    | 
____________________________ 
| C1 | John, Jack, Anna | 
| C2 | Alex, Bryan, David| 
____________________________ 

मैं द्वारा Zend फ्रेमवर्क में इस क्वेरी निष्पादित कर सकते हैं कैसे:

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

मुझे इस परिणाम दे Zend_Db_Table या Zend_Db_Select का उपयोग कर? आपको बहुत बहुत धन्यवाद!

उत्तर

12

मुझे लगता है कि यह ऐसा कुछ होगा। कोशिश करो।

$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'); 

जब मैंने इसे इकट्ठा, यह मेरे निम्न क्वेरी देता है:

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

यह आप के लिए क्या देख रहे है?

+0

आपके त्वरित उत्तर के लिए धन्यवाद। मैं कोशिश करूँगा। –

0

Zend अभिव्यक्ति मुझे समस्याओं दिया था, मेरे लिए सबसे आसान तरीका था:

$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')) 

यहाँ मैं श्रेणी के नाम और आईडी की एक सूची है, जो मैं अपने खोज परिणामों में विस्फोट और क्लिक करने योग्य की एक सूची मुद्रित श्रृंखलाबद्ध कर रहा हूँ प्रति अभिभावक रिकॉर्ड बाल श्रेणियां। आप स्पष्ट रूप से आगे() के साथ जुड़ने और अन्य स्थितियों को जोड़ सकते हैं क्योंकि उपरोक्त को उप-क्वेरी के रूप में माना जाएगा।

संबंधित मुद्दे