Как грамотно объединить два sql запроса?

Рейтинг: 1Ответов: 3Опубликовано: 19.03.2023

Я не слишком хорош в SQL и пытаюсь сделать нужный мне запрос, каким-то обрзаом объеденив два разных запроса:

  1. Поиск в справочнике значения которое ввел пользователь (arg1):

    select ShortWord from ShortWords where ShortWord like 'arg1' 
    
  2. Поиск в пользовательской таблице такого же значения (arg1):

    select WORDCOLLECT from CollectWords where WORDCOLLECT like 'arg1';
    

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

Как это лучше реализовать? Пытался через JOIM'ы, но скорей всего я что-то делаю не так.

Ответы

▲ 1Принят

Если привязка наборов данных конкретно по словам, может так?:

SELECT
  s.ShortWord
FROM ShortWords s
WHERE
  s.ShortWord LIKE 'arg1'
  AND NOT EXISTS (
    SELECT 1
    FROM CollectionWords c
    WHERE
      c.WORDCOLLECT = s.ShortWord
      AND c.WORDCOLLECT LIKE 'args1'
  )
▲ 1

если данные в двух таблицах имют одинаковые значения и размерность то можно использовать EXCEPT

select ShortWord from ShortWords where ShortWord like 'arg1' 
EXCEPT
select WORDCOLLECT from CollectWords where WORDCOLLECT like 'arg1';

т.е. из первой выборки будут исключены значения второй выборки

▲ 0

Проще всего получить нужные данные объединением запросов

select ShortWord from ShortWords where ShortWord like 'arg1' 
union
select WORDCOLLECT from CollectWords where WORDCOLLECT like 'arg1'

union оставит по одному слову, если будут совпадающие в двух подзапросах.