Ошибка синтаксиса внутреннего соединения, но теперь понятно, в чем ошибка

#sql #postgresql #join #inner-join

Вопрос:

Я пытаюсь подсчитать количество записей, в которых имя человека начинается с B, а дата создания записи-до 01-01-2021. Это говорит о том, что я получаю синтаксическую ошибку, но не уверен, почему!

Я должен выполнить два внутренних объединения, потому что в таблице a есть информация о дате создания, в которой указан идентификатор пользователя, совпадающий с таблицей b, в которой указан идентификатор имени клиента, а идентификатор имени находится в таблице c, в которой указана информация о первом имени.

 SELECT count(*) as count FROM table_a a 
INNER JOIN table_b b ON a.customer_ID = b.customer_id 
INNER JOIN table_c c b.customer_id ON = c.name_id
WHERE c.first_name like 'B%'
AND a.created_date::text like '2021-01-01%'
group by count
 

Может кто-нибудь, пожалуйста, помочь мне объяснить, что не так с моим синтаксисом? Большое спасибо!

Комментарии:

1. У вашего второго ВНУТРЕННЕГО СОЕДИНЕНИЯ есть проблема: INNER JOIN tablc_c c b_customer_id это неправильно. Прочитайте свое первое ВНУТРЕННЕЕ ОБЪЕДИНЕНИЕ и посмотрите, сможете ли вы понять, что изменилось.

2. LIKE не используется для значений дат, только для строк, и LIKE не собирается указывать даты, которые меньше 01-01-2021. Вам также не нужно ::text указывать после столбца даты, так как вы хотите, чтобы он все еще был датой.