2010-06-23 12 views
5

सिद्धांत में अधिकतम समूह या अधिकतम मूल्य वाली पंक्ति को आप कैसे ढूंढते हैं? एसक्यूएल में, मैं आम तौर पर here वर्णित एक स्वयं का उपयोग करके ऐसा करता हूं।सिद्धांत में समूहवार अधिकतम ढूँढना

जबकि सिद्धांत में आत्मनिर्भरता स्थापित करना संभव है, क्या ऐसा करने के कोई बेहतर तरीके हैं? ग्रुपवाइज अधिकतम की

+0

कोई कारण नहीं है कि आप स्वयं संबंध का उपयोग नहीं करना चाहते हैं? – DrColossos

+0

दो कारण: 1) ऐसा लगता है कि ओआरएम मॉडल का उल्लंघन होता है। यही है, वस्तु के लिए खुद की प्रतिलिपि बनाने के लिए यह समझ में नहीं आता है। 2) मैं शायद ही कभी यह प्रश्न कर रहा हूं इसलिए यह संबंध जोड़ने के लायक नहीं लगता है। –

उत्तर

5

उदाहरण:

$query = Doctrine_Query::create() 
    ->select("txs.id, txs.amount, txs.valid_from") 
    ->from("Tx txs") 
    ->where("txs.amount = (SELECT MAX(transact.amount) FROM tx transact WHERE txs.id = transact.id)"); 

पंक्ति शामिल करते हुए अधिक से अधिक का उदाहरण:

$query = Doctrine_Query::create() 
->select("txs.id, txs.amount, txs.valid_from") 
->from("Tx txs") 
->where("txs.id = (SELECT transact.id FROM tx transact WHERE transact.amount = (SELECT MAX(transactx.amount) FROM tx transactx))"); 

ये शायद ही तरीके (या सबसे स्वच्छ) नहीं हैं, लेकिन मैं तो बस दोनों का परीक्षण किया और वे काम करते हैं ।

1

यह प्रश्न वास्तव में पुराना है लेकिन यह Google पर "सिद्धांत समूह के अधिकतम" के लिए बहुत अधिक है, इसलिए मैंने सोचा कि मैं अपना समाधान जोड़ूंगा।

मेरे मामले में मेरे पास कई बच्चों के साथ एक अभिभावक इकाई थी और मैं उच्चतम आईडी वाले बच्चे से फ़ील्ड का चयन करना चाहता था।

$qb 
    ->select('child1.field') 
    ->from(Entity::class, 'entity') 
    ->join('entity.children', 'child1') 
    ->leftJoin('entity.children', 'child2', 'WITH', 'child1.entity=child2.entity AND child1.id<child2.id') 
    ->where('child2.id IS NULL') 
; 
संबंधित मुद्दे