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

Bahasa Kueri Doktrin mendapatkan Maks/Baris Terbaru Per Grup

Kueri yang Anda coba lakukan dengan doktrin terkait dengan . Untuk menggunakan sub kueri dan kemudian bergabung dengan kueri utama, dapatkan hal-hal rumit untuk ditangani dengan doktrin. Jadi di bawah ini adalah versi SQL yang ditulis ulang untuk mendapatkan hasil yang sama tanpa menggunakan fungsi agregat apa pun:

SELECT 
  a.* 
FROM
  score a 
  LEFT JOIN score b 
    ON a.name = b.name 
    AND a.score < b.score 
WHERE b.score IS NULL 
ORDER BY a.score DESC 

DEMO

Untuk mengonversi kueri di atas yang setara dengan doktrin atau DQL itu mudah, di bawah ini adalah versi DQL dari SQL di atas:

SELECT a 
FROM AppBundle\Entity\Score a
    LEFT JOIN AppBundle\Entity\Score b 
    WITH a.name = b.name 
    AND a.score < b.score
WHERE b.score IS NULL
ORDER BY a.score DESC

Atau dengan pembuat kueri, Anda dapat menulis sesuatu seperti yang telah saya uji di bawah ini dengan symfony 2.8 menggunakan Skema DEMO

$DM   = $this->get( 'Doctrine' )->getManager();
$repo = $DM->getRepository( 'AppBundle\Entity\Score' );
$results = $repo->createQueryBuilder( 'a' )
                ->select( 'a' )
                ->leftJoin(
                    'AppBundle\Entity\Score',
                    'b',
                    'WITH',
                    'a.name = b.name AND a.score < b.score'
                )
                ->where( 'b.score IS NULL' )
                ->orderBy( 'a.score','DESC' )
                ->getQuery()
                ->getResult();

Ide lain adalah membuat tampilan menggunakan kueri Anda di database dan di symfony membuat entitas, masukkan nama tampilan dalam anotasi tabel dan mulailah memanggil entitas Anda, itu akan memberikan hasil yang dikembalikan oleh kueri Anda, tetapi pendekatan ini tidak disarankan hanya perbaikan sementara .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Mengatur Ulang Kata Sandi Root MySQL atau MariaDB di Linux

  2. Python Terhubung Ke Database MySQL Dengan Konektor MySQL &Contoh PyMySQL

  3. Bergabung dengan tiga tabel menggunakan MySQL

  4. Menggunakan Penasihat Pencadangan Basis Data untuk Mengotomatiskan Tugas Pemeliharaan

  5. Bagaimana cara menampilkan kueri terakhir yang dieksekusi di MySQL?