Как грамотно объединить два sql запроса?
Я не слишком хорош в SQL и пытаюсь сделать нужный мне запрос, каким-то обрзаом объеденив два разных запроса:
Поиск в справочнике значения которое ввел пользователь (arg1):
select ShortWord from ShortWords where ShortWord like 'arg1'Поиск в пользовательской таблице такого же значения (arg1):
select WORDCOLLECT from CollectWords where WORDCOLLECT like 'arg1';
Результат запроса должен вывести все значения из справочника, за исключением тех, которые найдены в пользовательской таблице.
Как это лучше реализовать? Пытался через JOIM'ы, но скорей всего я что-то делаю не так.
Ответы (3 шт):
Если привязка наборов данных конкретно по словам, может так?:
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'
)
Проще всего получить нужные данные объединением запросов
select ShortWord from ShortWords where ShortWord like 'arg1'
union
select WORDCOLLECT from CollectWords where WORDCOLLECT like 'arg1'
union оставит по одному слову, если будут совпадающие в двух подзапросах.
если данные в двух таблицах имют одинаковые значения и размерность то можно использовать EXCEPT
select ShortWord from ShortWords where ShortWord like 'arg1'
EXCEPT
select WORDCOLLECT from CollectWords where WORDCOLLECT like 'arg1';
т.е. из первой выборки будут исключены значения второй выборки