Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

केकपीएचपी में ग्रुप और COUNT () उम्र

आपको जो परिणाम मिलते हैं, वे केकपीएचपी द्वारा उत्पादित किए जाने वाले सबसे अच्छे होते हैं।

इसे सरल बनाने के लिए आपको Set::combine जो आपके सरणी को फिर से अनुक्रमित करता है।

आपको $data = Set::combine($data, '{n}.0.age', '{n}.0.COUNT(id)'); पर कॉल करना होगा।

यह सूचकांक के रूप में आयु के साथ एक सरणी लौटाएगा और मान के रूप में गिना जाएगा:

Array
(
    [9] => Array
        (
            [COUNT(id)] => 1

        )

    [10] => Array
        (
            [COUNT(id)] => 1

        )
    ...
)

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

तो मान लें कि आप पुरुष/महिला के आधार पर भी समूह बनाना चाहते हैं और आपके पास User.sex फ़ील्ड है, जो परिकलित फ़ील्ड नहीं है।

$data = $this->User->find('all', array(
    'fields' => array(
        "User.sex"
        "DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(User.dob, '%Y') - (DATE_FORMAT(NOW(), '00-%m-%d') < DATE_FORMAT(User.dob, '00-%m-%d')) AS age",
        'COUNT(User.id) AS [count]' // n.b. you have to give aliases normally
    ),
    'group' => 'age', 'User.sex'
));

यह वापस आ जाएगा (कुछ इस तरह):

Array
(
    [0] => Array
        (
            [User] => Array
                (
                    [sex] => Male
                )
            [0] => Array
                (
                    [age] => 4
                    [count] => 1
                )

        )

    [1] => Array
        (
            [User] => Array
                (
                    [sex] => Female
                )
            [0] => Array
                (
                    [age] => 10
                    [count] => 1
                )

        )

    [2] => Array
        (
            [User] => Array
                (
                    [sex] => Male
                )
            [0] => Array
                (
                    [age] => 10
                    [count] => 1
                )

        )
)

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL में OFFSET के साथ LIMIT का उपयोग करते समय कौन सी पंक्तियां वापस आती हैं?

  2. MYSQL / PHP में अधिकतम निष्पादन समय निर्धारित करें

  3. PDO::ERRMODE_EXCEPTION चेतावनी को दबाता नहीं है

  4. एक संघ की गिनती की शर्त पर रेल 3 क्वेरी

  5. MySQL में न्यूज़लेटर के लिए डेटाबेस डिज़ाइन करने के लिए मार्गदर्शिका