Как грамотно написать запрос ? ->

a!rat

есть таблица T1 (columnA, columnB):1, a1, b2, b3, a3, b3, c4, cесть таблица T2 (columnC):abНужно вытащить из таблицы T1 такое значение поля ColumnA, для которого в таблице T1 соответствуют значения поля columnC из таблицы T2 (не больше, не меньше). Т.е. в данном примере должно вывестись значение 1 , т.к. ему соответсвуеют a, b , но НЕ значение 2 (т.к. ему соответствует b, но не соответсвует a) и НЕ значение 3 (т.к. ему соответсвуют значения a и b, но так же и c, которого нет в таблице T2).Надеюсь понятно. Подскажите плиз как грамотно написать запросик.
10 ответов

a!rat

full join и проверка на количество записей без null тебе поможет:)


a!rat

select columnA
from T1
group by columnA
having sum(columnB) = (select sum(columnC) from T2)
предполагая, что:- сочетание columnA, columnB в T1 уникально- columnC в T2 уникально.- все три поля в таблицах not null


a!rat

having count(columnB) = (select count(columnC) from T2)


a!rat

select columnA
from T1
group by columnA
having sum(columnB) = (select sum(columnC) from T2)
предполагая, что:- сочетание columnA, columnB в T1 уникально- columnC в T2 уникально.- все три поля в таблицах not null Posted via ActualForum NNTP Server 1.3
незя ТЕКСТ сумировать!


a!rat

having count(columnB) = (select count(columnC) from T2)
а если будет в первой таблице значение4 b4 cто на выходе будет и 1 и 4


a!rat

select columnA
from T1
group by columnA
having sum(columnB) = (select sum(columnC) from T2)
предполагая, что:- сочетание columnA, columnB в T1 уникально- columnC в T2 уникально.- все три поля в таблицах not null Posted via ActualForum NNTP Server 1.3
Вот с такими таблицами этот вариант по-моему не прокатитT1:1, 11, 142, 52, 10T2:114


a!rat

> незя ТЕКСТ сумировать!да, count, конечно, должен быть, сорри.
select columnA
from T1 inner join T2 on T1.columnB = T2.columnC
group by columnA
having count(columnB) = (select count(columnC) from T2)


a!rat

full join и проверка на количество записей без null тебе поможет:)
а можешь запросик написать ? )


a!rat

> незя ТЕКСТ сумировать!да, count, конечно, должен быть, сорри.
select columnA
from T1 inner join T2 on T1.columnB = T2.columnC
group by columnA
having count(columnB) = (select count(columnC) from T2)
Posted via ActualForum NNTP Server 1.3
Сюда ещё и 3 попадёт!


a!rat

declare @t1 table (a int, b varchar(<b>1</b>))
declare @t2 table (b varchar(<b>1</b>))

insert into @t1 
select <b>1</b>,'a' union select <b>1</b>,'b' union 
select <b>2</b>,'b' union
select <b>3</b>,'a' union select <b>3</b>,'b' union select <b>3</b>,'c' union 
select <b>4</b>,'b' union select <b>4</b>,'c' 

insert into @t2 select 'a' union select 'b'

select t1.a from @t1 t1
full join @t2 t2 on t1.b=t2.b
group by t1.a
having count(t1.b) = count(t2.b) and count(t1.b) = (select count(*) from @t2)