Mysql
 sql >> база данни >  >> RDS >> Mysql

Doctrine Query Language получава макс/последен ред на група

Заявката, която се опитвате да направите с доктрината, е свързана с . За да използвате подзаявка и след това да се присъедините към основната заявка, усложнете нещата с доктрината. Така че по-долу е пренаписаната версия на SQL, за да получите същите резултати без използване на агрегатни функции:

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 

ДЕМО

За да конвертирате по-горе заявка, еквивалентна на доктрина или DQL, е лесно, по-долу е DQL версията на горния SQL:

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

Или с конструктора на заявки можете да напишете нещо като тествах по-долу със symfony 2.8, като използвате ДЕМО схемата

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

Друга идея би била да създадете изглед, използвайки вашата заявка в база данни и в symfony създайте обект, поставете името на изгледа в анотацията на таблицата и просто започнете да извиквате обекта си, той ще даде резултатите, върнати от вашата заявка, но този подход не се препоръчва само за временна корекция .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да синхронизирам база данни SQLite на телефон с Android с база данни MySQL на сървъра?

  2. Използвайте mysqldump за архивиране на MySQL или MariaDB

  3. Как да изпълним MySQL команда от шел скрипт?

  4. Кое е най-доброто решение за обединяване на връзки към базата данни в python?

  5. как да прехвърля шестнадесетичния към varchar (datetime)?