Код: Выделить всё
SELECT stand.name, if(count(checkins.id)>0,true,false) as pocet_navstev FROM stand left join (select * from checkin where checkin.nickname_id=10) as checkins on (stand.id=checkins.stand_id) GROUP by stand.id;
Я пытался написать это так:
Код: Выделить всё
$mycheckins = $entityManager->createQueryBuilder("sub")
->select("checkin.id, checkin.Nickname, checkin.Stand")
->from("App\Entity\Checkin", "checkin")
->where("checkin.Nickname=10");
$stands = $entityManager->createQueryBuilder("main")
->select("stand.id", "stand.Name", "count(checkin.id)")
->from("App\Entity\Stand", "stand")
->leftJoin(sprintf("(%s)", $mycheckins->getDQL()), "checkins", "WITH", "stand.id=checkins.Stand")
->groupBy("stand.id")
->getQuery()
->getResult();
< /code>
Но после запуска я получаю ошибку: < /p>
[Semantical Error] line 0, col 80 near 'JOIN (SELECT': Error: Subquery is not supported here
Если я не звоню -> getQuery (), но потяните SQL, используя getDQL (), я получаю это:
Код: Выделить всё
SELECT stand.id, stand.Name, count(checkin.id) FROM App\Entity\Stand stand LEFT JOIN (SELECT checkin.id, checkin.Nickname, checkin.Stand FROM App\Entity\Checkin checkin WHERE checkin.Nickname=10) checkins WITH stand.id=checkins.Stand GROUP BY stand.id
Как я могу переписать мой код PHP, чтобы заставить его работать?
Подробнее здесь: https://stackoverflow.com/questions/795 ... m-subquery