Внутреннее объединение на основе определенных условий

0

Таблицы заключаются в следующем:

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, чтобы получить реальный город. Надеюсь, вы поняли мою мысль.

Теги:

2 ответа

1
Лучший ответ

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,"%");
1

Попробуй это:

SELECT Raw.Counter, Ref.RealCity FROM Tb_RawData As Raw INNER JOIN Tb_RefCity 
As Ref ON Raw.FakeCity LIKE CONCAT(Ref.RefCity, '%')

Ещё вопросы

Сообщество Overcoder
Наверх
Меню