Соедините два стола и объедините - без дубликатов - PullRequest
0 голосов
/ 15 мая 2018

У меня есть две таблицы:

Иллюстрация

enter image descri,ption here

В первой таблице у меня есть столбец NR, к которому я присоединяюсь ко второй таблице также по NR. Это дает мне информацию, которую я хочу знать. Но еще один шаг, который я должен сделать, - это то, что некоторые люди могут также написать этот NR в текстовое поле. Поэтому я выполняю фильтр, чтобы получить только числовые значения, а затем выполняю объединение t1.NR on t2.NRfromText. Это дает мне две таблицы одна с NR on NR и NR on TextNR. Затем я делаю союз между этими двумя таблицами. Я не так много в SQL, но я бы сказал, что дубликаты не выходили бы здесь? Таким образом, вопрос здесь заключается в том, чтобы затем выполнить соединение (внутреннее объединение) on t1.NR = t1.NR только строки с этой комбинацией "будут в t1" и только строки с t1.NR = t2.NRText будут в t2? Тогда я сделаю союз, там не будет дубликатов?

1 Ответ

0 голосов
/ 15 мая 2018

Присоединение к текстовым полям не рекомендуется. Это никогда не будет быстрым и подвержено ошибкам. Но если ваш префикс всегда один и тот же, я верю, что это сделает

SELECT DISTINCT data.* 
FROM
(
    SELECT t2.* 
    FROM [ActualTable1Name] AS t1
        INNER JOIN [ActualTable2Name] AS t2 ON t1.NR = t2.NR
    UNION ALL
    SELECT t2.* 
    FROM [ActualTable1Name] AS t1
        INNER JOIN [ActualTable2Name] AS t2 ON SUBSTRING(t1.Text, 6, LEN(t1.Text) - 5) = t2.NR
) AS data
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...