sql >> Databáze >  >> RDS >> Mysql

SQL / Doctrine:Problém s připojením vlevo

Vaše podmínky by měly být součástí klauzule LEFT JOIN ... ON.

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

Zadání podmínek do ON klauzule (na rozdíl od WHERE ) označuje, že se vztahují konkrétně na JOIN . Pokud tyto podmínky nesplňují žádné řádky, neexistuje žádné spojení – a to je přesně to, co v tomto případě chcete. Umístěte je do WHERE označuje, že výsledek řádky musí splňovat tyto podmínky. A je zřejmé, že pokud nebylo připojení, nemůžete uspokojit žádné podmínky o j tabulka.



  1. Stránka DataTables 2 stránkování nevolá Magnific Popup

  2. Jak vybrat rozsah řádků na základě hodnot polí - MySQL

  3. MySQL:Omezení sady sloupců tak, aby alespoň jeden nebyl NULL

  4. Příklady RAND() v SQL Server