sql >> Databasteknik >  >> RDS >> Mysql

SQL / Doctrine:Left Join problem

Dina villkor bör vara en del av LEFT JOIN ... ON-klausulen.

$q = $this->createQuery('c')
    ->leftJoin('c.stJob j WITH j.expires_at > ? AND j.is_activated = 1 AND j.is_public = 1', date('Y-m-d h:i:s', time()))
    ->addOrderBy('c.name');

Sätta villkor i ON sats (i motsats till WHERE ) indikerar att de gäller specifikt för JOIN . Om inga rader uppfyller dessa villkor, finns det ingen join – och det är precis vad du vill ha i det här fallet. Lägger in dem i WHERE indikerar att resultatet rader måste uppfylla dessa villkor. Och självklart kan du inte tillfredsställa någon om det inte fanns någon medlem villkor om j bord.



  1. Hur man beställer efter datum i MySQL

  2. Möten på arbetsplatsen:Återta utrymme från en överdimensionerad databas

  3. Effektivare hierarkisystem

  4. travis mysql databas skapa användarfel