Найти столбцы, которые соответствуют в двух таблицах - PullRequest
0 голосов
/ 16 октября 2011

Мне нужно запросить две таблицы компаний, в первой таблице указаны полные названия компаний, а во второй таблице также указаны имена, но они неполные.Идея состоит в том, чтобы найти поля, которые похожи.Я помещаю изображения ссылки и используемого кода SQL.

Результат, который я хочу получить, таков:

Я нашел самый близкий способ сделать это:

SELECT DISTINCT 
    RTRIM(a.NombreEmpresaBD_A) as NombreReal, 
    b.EmpresaDB_B as NombreIncompleto 
FROM EmpresaDB_A a, EmpresaDB_B b 
WHERE a.NombreEmpresaBD_A LIKE 'VoIP%' AND b.EmpresaDB_B LIKE 'VoIP%'

Проблема с приведенным выше кодом состоит в том, что он возвращает только запись, указанную в WHERE, и, если я поставлю этот LIKE '%', он возвращает декартово произведениеиз двух таблиц.СУБД - это Microsoft SQL Server.Буду очень признателен, если вы поможете мне с любым предложенным решением.

Ответы [ 2 ]

0 голосов
/ 16 октября 2011

Используйте короткое имя плюс добавленный '%' в качестве аргумента в выражении LIKE:

Редактируйте с информацией, имеющей дело с SQL Server:

SELECT a.NombreEmpresaBD_A as NombreReal
      ,b.NombreEmpresaBD_B as NombreIncompleto 
FROM   EmpresaDB_A a, EmpresaDB_B b
WHERE  a.NombreEmpresaBD_A LIKE (b.NombreEmpresaBD_B + '%');

В соответствии с вашим скриншотом, который вы имелинеправильное имя столбца !
Конкатенация строк в T-SQL с оператором +.
Приведенный выше запрос находит случай, когда

'Computex S.A' LIKE 'Computex%'

, но не :

'Voip Service Mexico' LIKE 'VoipService%'

Для этого вам придется сначала убрать пробелы или использовать более мощные функции сопоставления с образцом.
Я создал для вас демо на data.SE .
Посмотрите соответствие шаблону или оператор LIKE в руководстве .

0 голосов
/ 16 октября 2011

Я бы предложил добавить внешний ключ между таблицами, связывающими данные.Затем вы можете просто найти одну таблицу и присоединиться ко второй, чтобы получить другие результаты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...