Я хочу сделать левое соединение в MySQL. Объединение основано на условии. Например, если значение равно 328
, use Left Join <table A>
ELSE , используйте Left Join <table B>
Ниже приведены запросы:
SELECT * FROM applications app
CASE
WHEN
app.application_type = 328
THEN
LEFT JOIN application_individu ai
ON app.id = ai.application_id
ELSE
LEFT JOIN application_org ao
ON app.id = ao.application_id
END
WHERE app.id=11
Я получил сообщение об ошибке на phpmyadmin
#1064 - You have an error in your SQL syntax;
check the manual that corresponds to your MariaDB server version for the right syntax to use near
'(CASE WHEN app.application_type = 328 THEN
LEFT JOIN application_individu a' at line 5
1. Можем ли мы использовать CASE
для соединения?
2. Если возможно, как это сделать правильно?
Обновление данных
Ниже приведены примеры данных.
приложения
id application_type app_reference applicant_type status created_date
1 330 ZAK00001 328 1 2019-01-16 16:45:14
2 330 ZAK00002 328 1 2019-01-17 12:31:14
3 330 ZAK00003 329 2 2019-01-17 14:31:40
application_individu
id application_id name age gender contactNo ic
1 1 Ali 30 Male 1234 12345678
2 2 Chan 45 Male 1234 54321
application_org
id application_id companyName companyRegNo picName picContactNo companyEmail
1 3 My StartUp x-123Y Raja 01035562 example@mystartup.com
параметры
id parameterValue detail
1 328 Personal
2 329 Company
3 1 Complete
4 2 Pending
Это мой обновленный запрос без использования CASE
.
SELECT * FROM applications app
LEFT JOIN application_individu ai ON app.id=ai.application_id
LEFT JOIN application_org ao ON app.id=ao.application_id
LEFT JOIN parameters param ON app.applicant_type=param.main_id
LEFT JOIN parameters param2 ON app.status=param2.main_id
LEFT JOIN parameters param3 ON app.applicant_type=param3.main_id
LEFT JOIN parameters param4 ON app.status=param4.main_id
Есть ли способ проверить, является ли приложение Personal
или Company
, чтобы я не повторял параметры при соединении.