Как выбрать данные из двух или более таблиц с одинаковым псевдонимом в MySQL - PullRequest
0 голосов
/ 15 мая 2018

вот структура необходимых таблиц

table_base

id(**PK**)|name|foreign_code(**FK**)|
1|abcd|102|CAD|
2|efgh|201|CAM|
2|akdl|202|CAM|

table_core1

id(**PK**)|name|class_code|response_code|
101|object1_1|cl101|res101|
102|object1_2|cl102|res102|

table_core2

id(**PK**)|name|class_code|response_code|
201|object2_1|cl201|res201|
202|object2_2|cl202|res202|

Мое требование в MYSQL заключается в том, что мне нужно выбрать class_code случайным образом при общем совпадении из любой из двух таблиц, как показано ниже:

SELECT TB.*,core.class_code
FROM table_base as TB
IF (TB.foreign_code=="CAD")
 INNER JOIN table_core1 AS core ON(TB.foreign_code=core.id)
ENDIF

ELSE
 INNER JOIN table_core2 AS core ON(TB.foreign_code=core.id)
ENDELSE

1 Ответ

0 голосов
/ 15 мая 2018

Вы можете объединить обе таблицы и использовать COALESCE, чтобы получить значение:

SELECT 
    TB.*,
    COALESCE(core1.class_code,core2.class_code) as class_code
FROM table_base as TB
LEFT JOIN table_core1 AS core1 ON TB.foreign_code = core1.id AND TB.foreign_code = 'CAD'
LEFT JOIN table_core2 AS core2 ON TB.foreign_code = core2.id AND TB.foreign_code != 'CAD'
...