SELECT e.'event_type',e.'event_status',er.'event_reg_id',er.'event_id','events' as category,
IF(e.'event_type'='C',e.'parent_id' ,IF(e.'event_type'='S',er.'event_id','') ) temp_id
FROM 'event_registration' er
LEFT JOIN event e on er.'event_id'= temp_id WHERE er.'company_id'='%s' AND er.'student_id'='%S'
Я принимаю temp_id
как псевдоним и temp_id
его в состояние LEFT JOIN ON, он не работает. Я дал псевдоним вместо имени столбца в LEFT JOIN ON Условие
Вы не можете использовать псевдоним temp_id
в части ON
вашего запроса. Псевдоним там недоступен. Но вы можете сделать следующее перемещение вложенного IF
в часть ON
:
SELECT
e.'event_type',
e.'event_status',
er.'event_reg_id',
er.'event_id',
'events' AS category,
IF(e.'event_type' = 'C', e.'parent_id', IF(e.'event_type' = 'S', er.'event_id','')) AS temp_id,
FROM 'event_registration' er
LEFT JOIN event e ON er.'event_id'= IF(e.'event_type' = 'C', e.'parent_id', IF(e.'event_type' = 'S', er.'event_id',''))
WHERE er.'company_id' = '%s' AND er.'student_id' = '%S'
Вы не можете использовать псевдоним из SELECT
потому что часть FROM
выполняется раньше (qaru.site/questions/228547/...).