MySQL выбрать данные из результата псевдонима при условии LEFT JOIN

0
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 Условие

Теги:

1 ответ

0
Лучший ответ

Вы не можете использовать псевдоним 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/...).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню