Сбой левого внешнего соединения Mysql на 3 таблицах

#mysql #join

#mysql #Присоединиться

Вопрос:

В моей базе данных Mysql есть 3 таблицы следующим образом:

daily_data_update:

 ----------------------------------------------
id      date      code   user_id  followup_status
----------------------------------------------
1     08/10/2020   AD123    1          1
2     08/10/2020   AD134    2          2
3     08/10/2020   AD123    1          1
---------------------------------------------
  

Пользователи:

 -------------------------------------
id   first_name  user_re&ion
------------------------------------
1     Peter      scotland
2     Susan      ireland
------------------------------------
  

последующий статус

 ------------------------------------
id  followup_status
---------------------------------------
1      Paid
2     Unpaid
----------------------------------------
  

Мне нужно select date,code and followup_status from daily_data_update WHERE user_id in users вместе с followup_status. Мой запрос выглядит следующим образом:

 SELECT t1.`date`,
       t1.`code`,
       t3.`followup_status`
FROM `daily_data_update` AS t1,
     followupstatus AS t3
LEFT OUTER JOIN users AS t2 ON t1.user_id = t2.id
WHERE t2.id IS NOT NULL
  AND t2.user_re&ion = 'scotland'
  

Но запрос не выполняется, поскольку Unknown column 't1.user_id' in 'on clause'

Что не так с моим запросом и как я могу это решить?? Запрашиваю помощь..

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

1. Не используйте , соединения, а только правильные JOIN соединения.

2. Извините, будучи новичком, я не понял.

3. Я попробовал следующее, и статус выполнения отображается NULL: ВЫБЕРИТЕ t1. date , t1. code , t3. followup_status ИЗ daily_data_update AS t1 LEFT OUTER JOIN users AS t2 В t1.user_id = t2.id ОСТАВЛЕНО ЗНАЧЕНИЕ followupstatus КАК t3 ДЛЯ t1. followup_status = t3.followup_status ГДЕ t2.id НЕ РАВНО NULL И t2.user_re&ion = ‘scotland’

Ответ №1:

Попробуйте этот запрос:

 SELECT t1.`date`,
       t1.`code`,
       t3.`followup_status`
FROM `daily_data_update` AS t1
LEFT JOIN followupstatus AS t3 ON t1.followup_status = t3.id
LEFT JOIN users AS t2 ON t1.user_id = t2.id
WHERE t2.id IS NOT NULL
  AND t2.user_re&ion = 'scotland'
  

Надеюсь, это сработает!!

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

1. Followup_status отображает значение NULL

2. Можете ли вы поделиться тем, какой результат вы ожидаете?

3. followup_status должен быть оплачен или неоплачен, как показано в таблице в моем вопросе.

4. t1.followup_status = t3.followup_status должен быть t1.followup_status = t3.id

5. Спасибо @P. Лосось