Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

GROUP dan COUNT() usia di CakePHP

Hasil yang Anda dapatkan cukup banyak yang terbaik yang dihasilkan CakePHP.

Untuk menyederhanakan ini, Anda harus menggunakan Set::combine yang mengindeks ulang array Anda.

Anda perlu memanggil $data = Set::combine($data, '{n}.0.age', '{n}.0.COUNT(id)');

Ini akan mengembalikan array dengan usia sebagai indeks dan dihitung sebagai nilai:

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

        )

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

        )
    ...
)

Alasan kedalaman ekstra dalam larik adalah bahwa kue menggunakan model sebagai kunci untuk larik dalam jika Anda tidak menggunakan bidang terhitung, sehingga Anda dapat memasukkan beberapa model sebagai bidang dan mereka akan dipecah menjadi larik yang berbeda. Saat Anda menggunakan bidang terhitung, ia mempertahankan struktur yang sama, tetapi tidak mengetahui modelnya sehingga harus memasukkannya ke dalam larik umum.

Jadi katakanlah Anda ingin mengelompokkan menurut pria/wanita juga dan Anda memiliki bidang User.sex, yang bukan bidang terhitung.

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

Ini akan mengembalikan (seperti):

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
                )

        )
)

Jadi untuk konsistensi, kedalaman ekstra selalu ada meskipun Anda hanya menggunakan bidang terhitung



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Django models.py Kunci Asing Melingkar

  2. PERIOD_ADD() Contoh – MySQL

  3. JDBC PreparedStatement menghasilkan kesalahan sintaks MySQL

  4. Laravel bergabung dengan 3 Tabel

  5. DI MANA vs MEMILIKI