Ошибка с LEFT JOIN после условия WHERE ILIKE

Рейтинг: 0Ответов: 1Опубликовано: 20.03.2023

Столкнулся с проблемой с условием WHERE ILIKE. Решил проверить SQL запрос с условиями, но встретил ошибку и не понимаю как её исправить. В общем имею это:

LEFT JOIN public."Post" AS "Post" ON "Contact"."PostId" = "Post"."PostId" WHERE "Post"."DisplayName" ILIKE 'оператор машины'
LEFT JOIN public."ContactPhone" AS "ContactPhone" ON "Contact"."ContactId" = "ContactPhone"."ContactId"

Это только честь из всех JOINов, но ошибка заключается в этом:

ERROR syntax error at or near "LEFT" 

И она возникает после условия WHERE ILIKE. Как можно обойти её?

Ответы

▲ 1Принят

Сразу после JOIN может идти условие только в виде ON. А WHERE должно быть в самом конце, после всех JOIN, одно на весь SELECT.

Т.е. скорее всего тут нужно просто написать через AND в ON условие, поскольку оно относится именно к присоединяемой таблице:

LEFT JOIN public."Post" AS "Post" 
    ON "Contact"."PostId" = "Post"."PostId" AND "Post"."DisplayName" LIKE 'оператор машины'
LEFT JOIN public."ContactPhone" AS "ContactPhone" 
    ON "Contact"."ContactId" = "ContactPhone"."ContactId"

В общем случае можно писать и так, добавив нужные условия в самом конце через WHERE:

LEFT JOIN public."Post" AS "Post" ON "Contact"."PostId" = "Post"."PostId" 
LEFT JOIN public."ContactPhone" AS "ContactPhone" ON "Contact"."ContactId" = "ContactPhone"."ContactId"
WHERE "Post"."DisplayName" LIKE 'оператор машины'