Задать вопрос
lizanin
@lizanin

SQL. Иной синтаксис для получения результата?

допустим есть две таблицы TableA (ID INT) и TableB (ID INT, Param TINYINT).
Пересекаются между собой по полю ID. Таблица А содержит уникальные значения, таблица Б связи с неким параметром.
Связи так же уникальны. Кол-во связей для каждого ID может отличаться.
Есть ли какая-то иная возможность выцепить записи из таблицы A, который имеют связи только определенным набором параметров, кроме такой

select * from TableA a
where exists (select 1 from TableB b where b.id=a.id and b.Param in (x,y))
and not exists (select 1 from TableB b2 where b2.id=a.id and b2.Param NOT in (x,y))
  • Вопрос задан
  • 87 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
@res2001
Developer, ex-admin
select A.* from tableA A
join tableB B on B.id=A.id and B.Param in (x,y)
Ответ написан
lasalas
@lasalas
.NET Architect
SELECT * 
FROM TableA 
WHERE ID IN 
(
SELECT ID 
FROM TableB 
WHERE Param IN (x, y) 
EXCEPT 
SELECT ID 
FROM TableB 
WHERE Param NOT IN (x, y)
)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы