У меня есть две таблицы с разными индексами, которые я могу (вручную) сопоставить с одной на другую:
table1 table2
ID Name Data ID Name Data
1 A X 4 C1 11
2 B Y 5 B2 22
3 C Z 6 A3 33
A отображается на A3, B отображается на B2, C отображается на C1
Набор результатов, на который я надеюсь:
t1.ID t1.Name t1.Data t2.ID t2.Name t2.Data
1 A X 6 A3 33
2 B Y 5 B2 22
3 C Z 4 C1 11
Этот запрос не выполняется, потому что он не распознает "map":
SELECT *,
CASE t1.name
WHEN 'A' THEN 'A3'
WHEN 'B' THEN 'B2'
WHEN 'C' THEN 'C1'
END AS map
FROM table1 AS t1
INNER JOIN table2 AS t2 ON (t2.name = map)
Этот запрос не выполняется, поскольку вы можете не используйте CASE в состоянии ON:
[Этот запрос действительно работает. Я забыл КОНЕЦ в моем фактическом коде. Оказывается, это имеет большое значение.]
SELECT *
FROM table1 AS t1
INNER JOIN table2 AS t2 ON (t2.name = (SELECT CASE t1.name
WHEN 'A' THEN 'A3'
WHEN 'B' THEN 'B2'
WHEN 'C' THEN 'C1'
END ) )
Итак, мои вопросы:
1) Какие поисковые запросы Google я должен использовать, чтобы найти нужное решение?
2) Какое реальное решение?
3) Можно ли это сделать без создания таблицы поиска (самое простое решение)?