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

SQL / Doctrine :Проблем с лявото присъединяване

Вашите условия трябва да са част от клаузата 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');

Поставяне на условия в ON клауза (за разлика от WHERE ) показва, че те се отнасят конкретно за JOIN . Ако няма редове, които отговарят на тези условия, няма присъединяване — и това е точно това, което искате в този случай. Поставянето им в WHERE показва, че врезултатът редовете трябва да отговарят на тези условия. И очевидно, ако не е имало присъединяване, не можете да удовлетворитеникое условия за j таблица.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Проверете грешките в заявката на codeigniter, вместо да ги показвате на потребителя

  2. Хибернация Soft Delete с помощта на каскадна актуализация

  3. PHP/MySQL Изтрийте изображение от базата данни

  4. чат сървър:кой е най-добрият (оптимизиран) начин за запазване на дневник за разговори

  5. Не е намерен доставчик на Entity Framework за доставчик на ADO.NET „MySql.Data.MySqlClient“