Как я могу объединить две таблицы, которые имеют разные поля и требуют разных правил для СОЕДИНЕНИЯ? Пример:
tb_references tb_parts
================== ====================
f_type | f_item f_partID | f_partnumber
------------------ --------------------
YY | ABC123 1 | YYABC123
YY | ABC124 2 | YYABC124
NN | 000111 3 | YY000111
NN | 000112 4 | YY000112
Чтобы присоединиться к ним, я обычно выполняю следующий запрос:
SELECT *
FROM tb_references
JOIN tb_parts
ON f_type + f_item = f_partnumber
Однако вы можете увидеть, где f_type
из NN
выиграл не совпадают, поэтому мои результаты будут выглядеть следующим образом:
RESULTS
=============================================
f_type | f_item | f_partID | f_partnumber
---------------------------------------------
YY | ABC123 | 1 | YYABC123
YY | ABC124 | 2 | YYABC124
Как я могу указать оператор IF в запросе, чтобы я мог также сопоставить сломанные части NN
?
Что-то вроде этого logi c, но я не могу понять, как это сделать sh, хотя я безуспешно пробовал различные методы:
SELECT *
FROM tb_references
JOIN tb_parts
ON
IF (
f_type = 'NN' THEN
'YY' + f_item = f_partnumber
)
ELSE (
f_type + f_item = f_partnumber
)
Тогда мои оптимальные результаты были бы быть таким:
RESULTS
=============================================
f_type | f_item | f_partID | f_partnumber
---------------------------------------------
YY | ABC123 | 1 | YYABC123
YY | ABC124 | 2 | YYABC124
NN | 000111 | 3 | YY000111
NN | 000112 | 4 | YY000112
Я открыт, конечно, для других решений, которые не используют IF в JOIN - это просто мой способ попытаться описать проблему, с которой я сталкиваюсь . К сожалению, я не могу просто обновить поле «f_type», потому что это сторонняя база данных, которую мы не можем ни контролировать, ни редактировать.