Таблицы заключаются в следующем:
Tb_RefCity (оба столбца varchars)
RealCity | RefCity
------------------------
London 00 Perfor-Lon
Amsterdam Ort Amster
Tb_RawData (оба столбца varchars)
Counter | FakeCity
------------------------
222234 | 00 Perfor-Lon (2342)
342344 | 00 Perfor-Lon(23L)
534534 | 00 Perfor-Lon (342211
234444 | Ort Amster(761)
234234 | Ort Amster L1)
Я хочу, чтобы внутреннее соединение Tb_RawData с Tb_RefCity
вставляло RealCity
в City
и значения счетчика в Tb_FinalTable
Результат должен выглядеть так (пример)
Tb_FinalTable (Counter = int/City = varchar)
Counter | City
-----------------------
222234 | London
342344 | London
534534 | London
234444 | Amsterdam
234234 | Amsterdam
Мой текущий запрос:
INSERT INTO Tb_FinalTable
SELECT Raw.Counter, Ref.RealCity
FROM Tb_RawData As Raw
INNER JOIN Tb_RefCity As Ref ON Raw.FakeCity = Ref.RefCity
Проблема:
Проблема заключается в Tb_RawData
FakeCity
может иметь FakeCity
строки, но исходная точка всегда одинакова для определенного города, например:
00 Perfor-Lon
Ort Amster
Я хотел бы, чтобы мой запрос был независимым для завершения строк в FakeCity
и во внутреннем соединении, чтобы проверить начальные строки по сравнению с таблицей Ref, чтобы получить реальный город. Надеюсь, вы поняли мою мысль.
http://sqlfiddle.com/#!9/cae0da/1
INSERT INTO Tb_FinalTable
SELECT Raw.Counter, Ref.RealCity
FROM Tb_RawData As Raw
INNER JOIN Tb_RefCity As Ref
ON Raw.FakeCity LIKE CONCAT(Ref.RefCity,"%");
Попробуй это:
SELECT Raw.Counter, Ref.RealCity FROM Tb_RawData As Raw INNER JOIN Tb_RefCity
As Ref ON Raw.FakeCity LIKE CONCAT(Ref.RefCity, '%')