sql >> Database teknologi >  >> RDS >> Mysql

SQL / Doctrine:Left Join problem

Dine betingelser bør være en del af 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ætter betingelser i ON klausul (i modsætning til WHERE ) angiver, at de gælder specifikt for JOIN . Hvis ingen rækker opfylder disse betingelser, er der ingen join - og det er lige hvad du ønsker i dette tilfælde. Sætter dem i WHERE angiver, at resultatet rækker skal opfylde disse betingelser. Og selvfølgelig kan du ikke tilfredsstille nogen, hvis der ikke var nogen joinforbindelse betingelser om j tabel.



  1. Brug af IS NULL og COALESCE i OrderBy Doctrine Querybuilder

  2. Afkrydsningsfelter fra databaseværdier

  3. Brugervariabel i MySQL underforespørgsel

  4. mysql_num_rows():det leverede argument er ikke en gyldig MySQL resultatressource